RESTful 架構

RESTful測試地址html

JSONPlaceholdergit

http://jsonplaceholder.typicode.com/
https://github.com/typicode/jsonplaceholder#how-to

HTTP動詞github

GET(SELECT):從服務器取出資源(一項或多項)。
POST(CREATE):在服務器新建一個資源。
PUT(UPDATE):在服務器更新資源(客戶端提供改變後的完整資源)。
PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。
DELETE(DELETE):從服務器刪除資源。
HEAD:獲取資源的元數據。
OPTIONS:獲取信息,關於資源的哪些屬性是客戶端能夠改變的。

例子:json

GET /tickets # 獲取ticket列表
GET /tickets/12 # 查看某個具體的ticket
POST /tickets # 新建一個ticket
PUT /tickets/12 # 更新ticket 12.
DELETE /tickets/12 #刪除ticekt 12

資源api

單資源 (singular-resourceX )服務器

url樣例:order/  (order即指那個單獨的資源X)
GET - 返回一個新的order
POST- 建立一個新的order,從post請求攜帶的內容獲取值。

單資源帶id (singular-resourceX/{id} )restful

URL樣例:order/1 ( order即指那個單獨的資源X )
GET - 返回id是1的order
DELETE - 刪除id是1的order
PUT - 更新id是1的order,order的值從請求的內容體中獲取。

複數資源 (plural-resourceX/)app

URL樣例:orders/
GET - 返回全部orders

複數資源查找(plural-resourceX/search)異步

URL樣例:orders/search?name=123
GET - 返回全部知足查詢條件的order資源。(實例查詢,無關聯) - order名字等於123的。

複數資源查找(plural-resourceX/searchByXXX)post

URL樣例:orders/searchByItems?name=ipad
GET - 將返回全部知足自定義查詢的orders - 獲取全部與items名字是ipad相關聯的orders。

單數資源(singular-resourceX/{id}/pluralY)

URL樣例:order/1/items/ (這裏order即爲資源X,items是複數資源Y)
GET - 將返回全部與order id 是1關聯的items。
 
singular-resourceX/{id}/singular-resourceY/
URL樣例:order/1/item/
GET - 返回一個瞬時的新的與order id是1關聯的item實例。
POST - 建立一個與order id 是1關聯的item實例。Item的值從post請求體中獲取。
 
singular-resourceX/{id}/singular-resourceY/{id}/singular-resourceZ/
URL樣例:order/1/item/2/package/
GET - 返回一個瞬時的新的與item2和order1關聯的package實例。
POST - 建立一個新的與item 2和order1關聯的package實例,package的值從post請求體中得到。

狀態碼

200 OK - [GET]:服務器成功返回用戶請求的數據,該操做是冪等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數據成功。
202 Accepted - [*]:表示一個請求已經進入後臺排隊(異步任務)
204 NO CONTENT - [DELETE]:用戶刪除數據成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發出的請求有錯誤,服務器沒有進行新建或修改數據的操做,該操做是冪等的。
401 Unauthorized - [*]:表示用戶沒有權限(令牌、用戶名、密碼錯誤)。
403 Forbidden - [*] 表示用戶獲得受權(與401錯誤相對),可是訪問是被禁止的。
404 NOT FOUND - [*]:用戶發出的請求針對的是不存在的記錄,服務器沒有進行操做,該操做是冪等的。
406 Not Acceptable - [GET]:用戶請求的格式不可得(好比用戶請求JSON格式,可是隻有XML格式)。
410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再獲得的。
422 Unprocesable entity - [POST/PUT/PATCH] 當建立一個對象時,發生一個驗證錯誤。
500 INTERNAL SERVER ERROR - [*]:服務器發生錯誤,用戶將沒法判斷髮出的請求是否成功。

參考

RESTful API 設計最佳實踐    http://blog.jobbole.com/41233/
RESTful 接口規範    http://www.coderli.com/translate-restful-standard-resolved/
RESTful HTTP的實踐	http://www.infoq.com/cn/articles/designing-restful-http-apps-roth
RESTful API 設計指南	http://www.ruanyifeng.com/blog/2014/05/restful_api.html
相關文章
相關標籤/搜索