1、REST 接口web
在請求層面,REST 規範能夠簡單粗暴抽象成如下兩個規則:api
請求 API 的 URL 表示用來定位資源;
請求的 METHOD 表示對這個描述資源進行的操做;數組
知乎大神Ivony有句話說的好:安全
URL定位資源,用HTTP動詞(GET,POST,DELETE,DETC)描述操做。服務器
在設計web接口的時候,REST主要是用於定義接口名,接口名通常是用名詞寫,不用動詞,那怎麼表達「獲取」或者「刪除」或者「更新」這樣的操做呢——用請求類型來區分。架構
好比,咱們有一個friends接口,對於「朋友」咱們有增刪改查四種操做,怎麼定義REST接口?異步
增長一個朋友,uri: generalcode.cn/v1/friends 接口類型:POST佈局
刪除一個朋友,uri: generalcode.cn/va/friends 接口類型:DELETEpost
修改一個朋友,uri: generalcode.cn/va/friends 接口類型:PUTurl
查找朋友,uri: generalcode.cn/va/friends 接口類型:GET
注意:這就是REST接口,用url定位資源,用HTTP描述操做
上面咱們定義的四個接口就是符合REST協議的,請注意,這幾個接口都沒有動詞,只有名詞friends,都是經過Http請求的接口類型來判斷是什麼業務操做。
在不少系統中,幾乎只用 GET 和 POST 方法來完成了全部的接口操做;這個行爲相似於全用 DIV 來佈局。實際上,咱們不僅有GET 和 POST 可用,在 REST 架構中,有如下幾個重要的請求方法:GET,POST,PUT,PATCH,DELETE。這幾個方法均可以與對數據的 CRUD 操做對應起來。
CRUD 是指在作計算處理時的增長(Create)、讀取查詢(Retrieve)、更新(Update)和刪除(Delete)幾個單詞的首字母簡寫。即增刪改查
GET /api/users ( 表示讀取用戶列表)
GET 應當實現爲一個安全方法。用於獲取數據而不該該產生反作用。
他們都應當被實現爲冪等方法,即屢次一樣的更新請求應當對服務器產生一樣的反作用。
PUT 和 PATCH 有各自不一樣的使用場景:
PUT 用於更新資源的所有信息,在請求的 body 中須要傳入修改後的所有資源主體;
而 PATCH 用於局部更新,在 body 中只須要傳入須要改動的資源字段。
【Delete】,資源的刪除,相應的請求 HTTP 方法就是 DELETE。這個也應當被實現爲一個冪等的方法。
3、狀態碼
服務器向用戶返回的狀態碼和提示信息,常見的有如下一些(方括號中是該狀態碼對應的HTTP動詞)。
針對不一樣操做,服務器向用戶返回的結果應該符合如下規範。