restful編碼風格

2021-09-26 02:50:55 字數 2595 閱讀 5710

restrepresentational state transfer三個單詞的縮寫,由roy fielding於2023年**中提出,它代表著分布式服務的架構風格。而如果想你的api被稱為restful api,只要遵循其規定的約束即可。

客戶端-伺服器:通過將使用者ui與資料儲存分開,我們可以簡化伺服器元件來提高跨多個平台的使用者介面的可移植性並提高可伸縮性。 它可以比表現成前後端分離的思想。

無狀態:從客戶端到伺服器的每個請求都必須包含理解請求所需的所有資訊,並且不能利用伺服器上任何儲存的上下文。 這表示你應該盡可能的避免使用session,由客戶端自己標識會話狀態。(token)

規範介面:rest介面約束定義:資源識別; 請求動作; 響應資訊; 它表示通過uri標出你要操作的資源,通過請求動作(http method)標識要執行的操作,通過返回的狀態碼來表示這次請求的執行結果。

可快取: 快取約束要求將對請求的響應中的資料隱式或顯式標記為可快取或不可快取。如果響應是可快取的,則客戶端快取有權重用該響應資料以用於以後的等效請求。 它表示get請求響應頭中應該表示有是否可快取的頭(cache-control)

其中1,2,3約束最為重要,其中1容易理解。接下來我們就談談無狀態和規範介面的原則。

資源的描述構成了uri,它一般有以下約束:

使用名詞。如 user, student, class

http method對應不同的請求動作(資料庫或者業務邏輯)

get:查詢操作:

post:新增操作:

put更新操作(代表更新乙個實體的所有屬性)

patch部分更新(代表更新乙個屍體的部分屬性)由於有的瀏覽器相容性問題,一般推薦使用put

delete刪除操作

使用連字元( - )而不是(_)來提高uri的可讀性

//更易讀

//更容易出錯

在uri中使用小寫字母

不要使用副檔名 副檔名看起來很糟糕,不會增加任何優勢。刪除它們也會減少uri的長度。沒理由保留它們。

/ 不要使用它 /

/ 這是正確的uri /

使用查詢元件過濾uri集合

很多時候,我們會遇到需要根據某些特定資源屬性對需要排序,過濾或限制的資源集合的要求。為此,請不要建立新的api - 而是在資源集合api中啟用排序,過濾和分頁功能,並將輸入引數作為查詢引數傳遞。例如

?region=usa

?region=usa&brand=xyz

?region=usa&brand=xyz&sort=installation-date

不要在末尾使用/

作為uri路徑中的最後乙個字元,正斜槓(/)不會新增語義值,並可能導致混淆。最好完全放棄它們。

使用http狀態碼定義api執行結果

1xx:資訊

通訊傳輸協議級資訊。

2xx:成功

表示客戶端的請求已成功接受。

3xx:重定向

表示客戶端必須執行一些其他操作才能完成其請求。

4xx:客戶端錯誤

此類錯誤狀態**指向客戶端。

5xx:伺服器錯誤

伺服器負責這些錯誤狀態**。

另外完整的更為詳細的狀態碼此處不做贅述。一般簡化版本的api會使用200,400,500,其中400代表客戶端呼叫有誤,將錯誤資訊放入response:

1

23

api版本定義

當我們需要對現有的api介面公升級的時候,因為該api介面已經投入使用,所以新新增的業務可能無法保證相容原來的邏輯,這個時候就需要新的介面,而這個介面一般表示對原來的介面的公升級(不同版本),那版本怎麼定義呢?

使rest api無狀態有一些非常顯著的優點:

無狀態通過將api部署到多個伺服器,有助於將api擴充套件到數百萬併發使用者。任何伺服器都可以處理任何請求,因為沒有與會話相關的依賴。(集群)

無狀態使得rest api不那麼複雜 - 可以刪除所有伺服器端狀態同步邏輯。(刪除session,清理多餘空間)

無狀態api也很容易快取。特定軟體可以通過檢視該乙個請求來決定是否快取http請求的結果。從先前的請求中獲得的狀態可能會影響這個請求的可快取性,這並不存在任何不確定性。它提高了應用程式的效能。

伺服器永遠不會忘記每個客戶端身份」,因為客戶端會在每個請求中傳送所有必要的資訊。(攜帶token)

對於RestFul編碼風格的理解

resultful風格 restful風格是一種資源定位以及資源操作的風格。它既不是某種必須遵循的標準,也不是大家都不能改動的協議,而是一種編碼風格。當我們在實際的業務開放當中使用到restful風格時,會使得我們的業務進展速度很大程度度的提高。主要功能 get 用於查詢資源 post 用於建立資源...

設計風格 Restful

rest是設計風格而不是標準,只提供了一組設計原則和約束條件 資源由uri來指定 uri 統一資源識別符號 對資源的包括包括獲取 建立 修改 和刪除資源 這些操作正好對應http協議提供的get post put和delete方法 通過操作資源的表現形式來操作資源 非rest風格url http q...

restful風格概述

利用http協議的四種操作get put delete post實現對伺服器資源的增刪改查 get 用於查詢,post用於新增,put用於修改,delete用於刪除 restful風格程式設計。restful 更強調是資源 webservice,rml等訪問技術更強調過程。restful的重點體現在...