中文翻譯為“表述性狀態(tài)轉(zhuǎn)移,也就是面向資源和使用Http動詞,就已經(jīng)很Restful了
我們總結(jié)一下什么是RESTful架構(gòu):
?。?)每一個URI代表一種資源;
?。?)客戶端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層;
?。?)客戶端通過四個HTTP動詞,對服務(wù)器端資源進行操作,實現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"。
RESTful架構(gòu)應(yīng)該遵循統(tǒng)一接口原則,統(tǒng)一接口包含了一組受限的預(yù)定義的操作,不論什么樣的資源,都是通過使用相同的接口進行資源的訪問。接口應(yīng)該使用標準的HTTP方法如GET,PUT和POST,并遵循這些方法的語義。
如果按照HTTP方法的語義來暴露資源,那么接口將會擁有安全性和冪等性的特性,例如GET和HEAD請求都是安全的, 無論請求多少次,都不會改變服務(wù)器狀態(tài)。而GET、HEAD、PUT和DELETE請求都是冪等的,無論對資源操作多少次, 結(jié)果總是一樣的,后面的請求并不會產(chǎn)生比第一次更多的影響。
下面列出了GET,DELETE,PUT和POST的典型用法:
GET
安全且冪等
獲取表示
變更時獲取表示(緩存)
200(OK) - 表示已在響應(yīng)中發(fā)出
204(無內(nèi)容) - 資源有空表示
301(Moved Permanently) - 資源的URI已被更新
303(See Other) - 其他(如,負載均衡)
304(not modified)- 資源未更改(緩存)
400 (bad request)- 指代壞請求(如,參數(shù)錯誤)
404 (not found)- 資源不存在
406 (not acceptable)- 服務(wù)端不支持所需表示
500 (internal server error)- 通用錯誤響應(yīng)
503 (Service Unavailable)- 服務(wù)端當前無法處理請求
POST
不安全且不冪等
使用服務(wù)端管理的(自動產(chǎn)生)的實例號創(chuàng)建資源
創(chuàng)建子資源
部分更新資源
如果沒有被修改,則不過更新資源(樂觀鎖)
200(OK)- 如果現(xiàn)有資源已被更改
201(created)- 如果新資源被創(chuàng)建
202(accepted)- 已接受處理請求但尚未完成(異步處理)
301(Moved Permanently)- 資源的URI被更新
303(See Other)- 其他(如,負載均衡)
400(bad request)- 指代壞請求
404 (not found)- 資源不存在
406 (not acceptable)- 服務(wù)端不支持所需表示
409 (conflict)- 通用沖突
412 (Precondition Failed)- 前置條件失?。ㄈ鐖?zhí)行條件更新時的沖突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用錯誤響應(yīng)
503 (Service Unavailable)- 服務(wù)當前無法處理請求
PUT
不安全但冪等
用客戶端管理的實例號創(chuàng)建一個資源
通過替換的方式更新資源
如果未被修改,則更新資源(樂觀鎖)
200 (OK)- 如果已存在資源被更改
201 (created)- 如果新資源被創(chuàng)建
301(Moved Permanently)- 資源的URI已更改
303 (See Other)- 其他(如,負載均衡)
400 (bad request)- 指代壞請求
404 (not found)- 資源不存在
406 (not acceptable)- 服務(wù)端不支持所需表示
409 (conflict)- 通用沖突
412 (Precondition Failed)- 前置條件失?。ㄈ鐖?zhí)行條件更新時的沖突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用錯誤響應(yīng)
503 (Service Unavailable)- 服務(wù)當前無法處理請求
DELETE
不安全但冪等
刪除資源
200 (OK)- 資源已被刪除
301 (Moved Permanently)- 資源的URI已更改
303 (See Other)- 其他,如負載均衡
400 (bad request)- 指代壞請求
404 (not found)- 資源不存在
409 (conflict)- 通用沖突
500 (internal server error)- 通用錯誤響應(yīng)
503 (Service Unavailable)- 服務(wù)端當前無法處理請求