RestfulAPI超簡單入門
簡單入門
REST -- REpresentational State Transfer,英語的直譯就是“表現層狀態轉移”
是目前最流行的 API 設計規範,用於 Web 數據接口的設計。
由客戶端發出數據操作指令,後臺接受決定如何操作。
粗暴解釋:用HTTP
動詞(GET
,POST
,PUT
,PATCH
,DELETE
)描述操作,其後接URL定位資源。
GET
:讀取(Read)POST
:新建(Create)PUT
:更新(Update)PATCH
:更新(Update),通常是部分更新DELETE
:刪除(Delete)
類似於:
GET
:http://www.ccc.com/source/id 就是獲取指定ID的某一類資源
POST
:http://www.ccc.com/vips/23 表示為指定ID為23的會員新增好友。
註意!: HTTP動詞均為大寫!
動詞的覆蓋
有些客戶端只能使用Get
和POST
這兩種方法。服務器必須接受POST
模擬其他三個方法(PUT
、PATCH
、DELETE
)。
這時,客戶端發出的 HTTP
請求,要加上X-HTTP-Method-Override
屬性,告訴服務器應該使用哪一個動詞,覆蓋POST方法。
POST /api/Person/4 HTTP/1.1
X-HTTP-Method-Override: PUT
上面代碼中,X-HTTP-Method-Override
指定本次請求的方法是PUT
,而不是POST
設計原則
RESTful API
設計原則是無狀態的。
所謂無狀態即所有的資源都可以URI
定位,而且這個定位與其他資源無關,也不會因為其他資源的變化而變化。
有狀態和無狀態的區別,舉個例子說明一下,例如要查詢員工工資的步驟為
第一步:登錄系統。
第二步:進入查詢工資的頁面。
第三步:搜索該員工。
第四步:點擊姓名查看工資。
這樣的操作流程就是有狀態的,查詢工資的每一個步驟都依賴於前一個步驟,只要前置操作不成功,後續操作就無法執行。
如果輸入一個URL
就可以得到指定員工的工資,則這種情況就是無狀態的,因為獲取工資不依賴於其他資源或狀態,且這種情況下,員工工資是一個資源,由一個URL
與之對應可以通過HTTP
GET
方法得到資源,這就是典型的RESTful
風格。
服務器回應
客戶端的每一次請求,服務器都必須給出回應。回應包括 HTTP 狀態碼和數據兩部分。
狀態碼:
HTTP 狀態碼就是一個三位數,分成五個類別。
- 1xx:相關信息
- 2xx:操作成功
- 3xx:重定向
- 4xx:客戶端錯誤
- 5xx:服務器錯誤
返回信息:
API 返回的數據格式應該為Json格式,所以,服務器回應的HTTP
頭的Content-Type
屬性要設為application/json
.
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"error": "Invalid payoad.",
"detail": {
"surname": "This field is required."
}
}
參考鏈接
RESTful API 最佳實踐 by 阮一峰
什麽是RESTful API? by hjc1984117
RestfulAPI超簡單入門