2023年,roy thomas fielding博士在他的博士**《architectural styles and the design of network-based software architectures》中提出了幾種軟體應用的架構風格,rest作為其中的一種架構風格在這篇**中進行了概括性的介紹。
rest:representational state transfer的縮寫,翻譯:「具象狀態傳輸」。一般解釋為「表現層狀態轉換」。
rest是設計風格而不是標準。是指客戶端和伺服器的互動形式。我們需要關注的重點是如何設計rest風格的網路介面。
rest的特點:
表現:資源的表現形式。txt格式、html格式、json格式、jpg格式等。瀏覽器通過url確定資源的位置,但是需要在http請求頭中,用accept和content-type欄位指定,這兩個欄位是對資源表現的描述。
狀態轉換:客戶端和伺服器互動的過程。在這個過程中,一定會有資料和狀態的轉化,這種轉化叫做狀態轉換。其中,get表示獲取資源,post表示新建資源,put表示更新資源,delete表示刪除資源。http協議中最常用的就是這四種操作方式。
如何設計符合restful風格的api:
將api部署在專用網域名稱下:
或者將api放在主網域名稱下:
將api的版本號放在url中。
路徑表示api的具體**。每個**代表一種資源。 資源作為**,**中不能有動詞只能有名詞,一般名詞要與資料庫的表名對應。而且名詞要使用複數。
錯誤示例:
正確示例:
對於資源的具體操作型別,由http動詞表示。 常用的http動詞有四個。
get select :從伺服器獲取資源。
post create :在伺服器新建資源。
put update :在伺服器更新資源。
delete delete :從伺服器刪除資源。
示例:
#獲取指定商品的資訊
get
#新建商品的資訊
post
#更新指定商品的資訊
put
#刪除指定商品的資訊
delete
如果資源資料較多,伺服器不能將所有資料一次全部返回給客戶端。api應該提供引數,過濾返回結果。 例項:
#指定返回資料的數量
?limit=10
#指定返回資料的開始位置
?offset=10
#指定第幾頁,以及每頁資料的數量
?page=2&per_page=20
伺服器向使用者返回的狀態碼和提示資訊,常用的有:
200 ok :伺服器成功返回使用者請求的資料
201 created :使用者新建或修改資料成功。
202 accepted:表示請求已進入後台排隊。
400 invalid request :使用者發出的請求有錯誤。
401 unauthorized :使用者沒有許可權。
403 forbidden :訪問被禁止。
404 not found :請求針對的是不存在的記錄。
406 not acceptable :使用者請求的的格式不正確。
500 internal server error :伺服器發生錯誤。
一般來說,伺服器返回的錯誤資訊,以鍵值對的形式返回。
針對不同結果,伺服器向客戶端返回的結果應符合以下規範。
#返回商品列表
get
#返回單個商品
get /cup
#返回新生成的商品
post
#返回乙個空文件
delete
伺服器返回的資料格式,應該盡量使用json,避免使用xml。 REST設計風格
2000年,roy thomas fielding博士在他的博士 architectural styles and the design of network based software architectures 中提出了幾種軟體應用的架構風格,rest作為其中的一種架構風格在這篇 中進行了概括...
用REST風格設計部落格API
模仿 github,設計乙個部落格 的 api 1 獲取自己部落格下的所有文章get api v1 user articles檢視文章時,使用get方法。這裡用單數user指代自己乙個人且不用指定自己使用者名稱或者id。v1代表版本號。響應內容 失敗響應 2 根據文章id獲取自己的文章get api...
REST架構風格
rest風格通過uri訪問得到的資訊是自我描述的,包括了資訊本身和表示方式 html,xml,資料流等 資訊的描述是採用最通用的協議 http 超文字轉換協議 來進行的.客戶端根據資訊的表示解析和展示資訊本身.而互動是通過http的幾個基本操作 get,put,post,delete 來實現.一些看...