REST API的藝術:初學者穿越API空間的旅程與速查表!
來源:小技術君
REST API是數字世界的關鍵組成部分,使不同的應用程式和系統能夠無縫地相互通訊。我們的旅程將從深入探討REST API架構的六個基本原則開始。這些原則包括客戶端-伺服器架構、狀態無關性、可快取性、分層系統、統一介面和按需程式碼。閱讀至文章末尾獲取速查表。
REST API設計的六個支柱
六個REST API原則!
1.客戶端-伺服器架構: 這個原則將使用者介面關注點與資料儲存關注點分離,透過簡化伺服器元件從而提高介面在各平臺上的可移植性,並透過簡化伺服器元件來增強可伸縮性。2.狀態無關互動: 每個客戶端到伺服器的請求必須包含理解和處理請求所需的所有資訊。伺服器不儲存有關客戶端的任何會話資訊。3.可快取的響應: 在REST中,響應必須定義為可快取或不可快取。這意味著客戶端可以將來等效請求的響應資料進行重用,減輕伺服器負載並提高應用程式的效率。4.分層系統: 系統通常以具有特定功能的層組織,使得客戶端難以判斷它們是直接連線到最終伺服器還是中間伺服器。5.按需程式碼: 伺服器可以透過傳輸可執行程式碼(例如Java小程式或JavaScript)來擴充套件客戶端的功能。6.統一介面: 此約束簡化並解耦架構,使每個部分能夠獨立發展。一致介面的四個指導原則是請求中的資源標識、透過表示操作資源、自描述訊息和超媒體作為應用程式狀態引擎(HATEOAS)。•自描述訊息: 每個來自客戶端的訊息都帶有詳細的說明,就像一份精心編寫的食譜,準確告訴伺服器要做什麼。•基於資源: 資源是API世界的名詞,如使用者、照片、細節,透過URI在請求中進行標識,就像網際網路上的地址一樣。•透過表示操作: 當客戶端獲取資源的表示時,它獲取了修改或刪除資源所需的所有詳細資訊,假設具有許可權。
理解這些原則至關重要,因為它們構成了RESTful API建立和執行的基礎。
解剖URI
在快節奏的Web開發世界中,REST API就像數字體內錯綜複雜的血管網路一樣重要。它們對於客戶端(如瀏覽器或移動應用)與伺服器(資料儲存的地方)之間的通訊至關重要。讓我們透過一個實際示例來揭示URI(統一資源識別符號)的元素:
HTTP方法:網際網路的動詞
•GET 求知者: 使用GET請求檢索伺服器資料,就像向圖書館員詢問一本書一樣。GET請求應該是安全和冪等的,這意味著多次發出請求不會導致額外的副作用或伺服器狀態更改。•POST:創作者: POST請求建立新資源。在客戶端請求伺服器處理請求正文中包含的資源時,使用POST是必要的。成功的響應將返回一個包含指向新建立資源的連結的201 Created狀態的Location標頭。•PUT 優秀的編輯者: PUT請求更新現有資源或在特定URL上建立它們(如果它們不存在)。它們是冪等的,因此多次傳送相同的請求會產生與傳送一次相同的結果。•PATCH:微調器: PATCH部分更新資源,就像糾正整本書而不改變整本書一樣。它有時是冪等的,但最好在可能的情況下以這種方式實現。•DELETE 記錄橡皮擦: DELETE請求從伺服器的庫中刪除資源。它們應該是冪等的,後續請求應該返回404 Not Found狀態程式碼。
協議:參與規則
HTTPS: HTTPS是HTTP的安全版本,使用TLS加密。這是Web服務的黃金標準,保護登入憑據、支付資訊和個人資料等敏感資料。最佳實踐是預設使用HTTPS以確保資料的完整性和保密性。
版本控制:保持章節有序
/v1: API版本控制對於在不中斷服務的情況下管理更新至關重要。保持一致的版本控制策略,並具有清晰的棄用政策。每個版本都應有文件,並且使用者應該被告知新版本。避免過度版本化,為重大更改保留新
版本。版本控制是與使用者建立的一種契約,承諾在繼續發展技術的同時保持穩定性。
子域:圖書館中的特定過道
api: 子域是組織線上存在的一種很好的方式。使用它們來命名業務的不同區域,分離應用程式環境,簡化訪問控制,幫助可伸縮性並控制Cookie和會話。只是要注意搜尋引擎可能會將子域視為獨立的網站。
端點:流派部分
/users: 端點是表示API的唯一功能或資源的特定URI。它們應該設計得直觀、清晰且在所有端點上保持一致。資源命名應該使用名詞,並邏輯上表示層次結構和關係。複雜查詢應透過查詢引數處理。精心設計的端點對於高效、使用者友好的API至關重要,就像商場中井然有序的商店提供愉快的購物體驗一樣。
分頁:索引頁面
?page=2&limit=10: 分頁將龐大的資料集分解為較小、編號的部分(頁面),使資料檢索變得可管理和使用者友好。使用標準引數,提供導航連結,確保一致的排序,並提供總計和頁面後設資料。透過使用分頁,API確保資訊是可訪問的,檢索資訊的體驗愉快,就像在井然有序的圖書館中找到合適的書一樣。
過濾:圖書館查詢
?age=25&gender=male: 過濾是一種請求滿足特定標準的資料的方法。這就像要求知識淵博的導遊只向您展示在大型市場中滿足您需求的物品一樣。為了有效地實施過濾,使用查詢引數、清晰一致的命名、支援多個過濾器、高效地查詢資料庫並記錄可用的過濾器。API中的過濾簡化了資料檢索過程,使其高效且使用者友好。透過允許客戶端過濾和排序資料,減少了頻寬使用並提高了相關性。
透過理解這些URI元件,您正在掌握REST API的藝術。它們是指引資料流動的路標和工具,確保您能夠找到並與您需要的資訊進行互動。
•設計 您的API以反映您的域或資料庫架構,建立自然而直觀的結構。•密切關注您的API的效能,使用響應時間和狀態程式碼等指標確保最佳執行。•實施強大的身份驗證和授權機制,明智地管理CORS,強制執行TLS,實踐冪等操作,嚴格驗證輸入,限制請求速率,並記錄活動而不 compromi敏感資料。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70024922/viewspace-3003965/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 初學者的福音-----帶你摸透VUE中的APIVueAPI
- rest apiRESTAPI
- GraphQL API vs REST APIAPIREST
- (16) SpringCloud-Eureka的REST API及API擴充套件SpringGCCloudRESTAPI套件
- Spark REST API & metricsSparkRESTAPI
- Elasticsearch(二)——Rest APIElasticsearchRESTAPI
- 影響rest api版本選擇的因素RESTAPI
- 使用 Laravel Passport 為你的 REST API 增加使用者認證功能LaravelPassportRESTAPI
- 15個與語言無關的REST API設計技巧 - bluethlRESTAPI
- 深入瞭解Kubernetes REST API的工作方式RESTAPI
- 13 個設計 REST API 的最佳實踐RESTAPI
- 探索Django REST框架構建強大的APIDjangoREST框架架構API
- SQL Azure REST API與StreamInsight雲工具簡介RYSQLRESTAPI
- Elasticsearch 入門實戰(8)--REST API 使用二(Search API)ElasticsearchRESTAPI
- 用ASP.NET Core 2.1 建立規範的 REST API -- 保護API和其它ASP.NETRESTAPI
- 適用於SaaS初創公司的REST API的一系列模式和最佳實踐 - alexkruppRESTAPI模式
- Django REST framework API 指南(21):SchemasDjangoRESTFrameworkAPI
- Harbor配置Swagger遠端REST APISwaggerRESTAPI
- rest-api設計風格RESTAPI
- Django REST framework API 指南(6):路由DjangoRESTFrameworkAPI路由
- Django REST framework API 指南(7):解析DjangoRESTFrameworkAPI
- Django REST framework API 指南(8):渲染DjangoRESTFrameworkAPI
- Django REST framework API 指南(27):SettingsDjangoRESTFrameworkAPI
- Django REST framework API 指南(15):限流DjangoRESTFrameworkAPI
- BUUCTF:穿越時空的思念
- Django REST framework API 指南(17):分頁DjangoRESTFrameworkAPI
- Django REST framework API 指南(18):版本控制DjangoRESTFrameworkAPI
- Elasticsearch Java High Level REST Client(Exists API)ElasticsearchJavaRESTclientAPI
- Elasticsearch Java High Level REST Client(Delete API)ElasticsearchJavaRESTclientdeleteAPI
- REST API簽名認證機制RESTAPI
- Django REST framework API 指南(13):認證DjangoRESTFrameworkAPI
- elasticsearch常用請求介面Rest API示例ElasticsearchRESTAPI
- Flask框架搭建REST-API服務Flask框架RESTAPI
- Pulsar 入門實戰(6)--Rest APIRESTAPI
- Django REST framework API 指南(23):返回 URLDjangoRESTFrameworkAPI
- Django REST framework API 指南(24):異常DjangoRESTFrameworkAPI
- Django REST framework API 指南(26):測試DjangoRESTFrameworkAPI
- Django REST framework API 指南(16):過濾DjangoRESTFrameworkAPI