1. 程式人生 > >RestfulAPI超簡單入門

RestfulAPI超簡單入門

erro 包括 per 設計原則 不成功 定向 font get 返回

簡單入門

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動詞均為大寫!

動詞的覆蓋

有些客戶端只能使用GetPOST這兩種方法。服務器必須接受POST模擬其他三個方法(PUTPATCHDELETE)。

這時,客戶端發出的 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超簡單入門