中文翻譯為“表述性狀態(tài)轉(zhuǎn)移,也就是面向資源和使用Http動(dòng)詞,就已經(jīng)很Restful了
我們總結(jié)一下什么是RESTful架構(gòu):
(1)每一個(gè)URI代表一種資源简烘;
】髡(2)客戶(hù)端和服務(wù)器之間,傳遞這種資源的某種表現(xiàn)層劫狠;
∷┌獭(3)客戶(hù)端通過(guò)四個(gè)HTTP動(dòng)詞,對(duì)服務(wù)器端資源進(jìn)行操作独泞,實(shí)現(xiàn)"表現(xiàn)層狀態(tài)轉(zhuǎn)化"呐矾。
RESTful架構(gòu)應(yīng)該遵循統(tǒng)一接口原則,統(tǒng)一接口包含了一組受限的預(yù)定義的操作懦砂,不論什么樣的資源蜒犯,都是通過(guò)使用相同的接口進(jìn)行資源的訪(fǎng)問(wèn)组橄。接口應(yīng)該使用標(biāo)準(zhǔn)的HTTP方法如GET,PUT和POST罚随,并遵循這些方法的語(yǔ)義玉工。
如果按照HTTP方法的語(yǔ)義來(lái)暴露資源,那么接口將會(huì)擁有安全性和冪等性的特性淘菩,例如GET和HEAD請(qǐng)求都是安全的遵班, 無(wú)論請(qǐng)求多少次,都不會(huì)改變服務(wù)器狀態(tài)潮改。而GET狭郑、HEAD、PUT和DELETE請(qǐng)求都是冪等的汇在,無(wú)論對(duì)資源操作多少次翰萨, 結(jié)果總是一樣的,后面的請(qǐng)求并不會(huì)產(chǎn)生比第一次更多的影響糕殉。
下面列出了GET亩鬼,DELETE,PUT和POST的典型用法:
GET
安全且冪等
獲取表示
變更時(shí)獲取表示(緩存)
200(OK) - 表示已在響應(yīng)中發(fā)出
204(無(wú)內(nèi)容) - 資源有空表示
301(Moved Permanently) - 資源的URI已被更新
303(See Other) - 其他(如阿蝶,負(fù)載均衡)
304(not modified)- 資源未更改(緩存)
400 (bad request)- 指代壞請(qǐng)求(如雳锋,參數(shù)錯(cuò)誤)
404 (not found)- 資源不存在
406 (not acceptable)- 服務(wù)端不支持所需表示
500 (internal server error)- 通用錯(cuò)誤響應(yīng)
503 (Service Unavailable)- 服務(wù)端當(dāng)前無(wú)法處理請(qǐng)求
POST
不安全且不冪等
使用服務(wù)端管理的(自動(dòng)產(chǎn)生)的實(shí)例號(hào)創(chuàng)建資源
創(chuàng)建子資源
部分更新資源
如果沒(méi)有被修改,則不過(guò)更新資源(樂(lè)觀鎖)
200(OK)- 如果現(xiàn)有資源已被更改
201(created)- 如果新資源被創(chuàng)建
202(accepted)- 已接受處理請(qǐng)求但尚未完成(異步處理)
301(Moved Permanently)- 資源的URI被更新
303(See Other)- 其他(如羡洁,負(fù)載均衡)
400(bad request)- 指代壞請(qǐng)求
404 (not found)- 資源不存在
406 (not acceptable)- 服務(wù)端不支持所需表示
409 (conflict)- 通用沖突
412 (Precondition Failed)- 前置條件失斊歉俊(如執(zhí)行條件更新時(shí)的沖突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用錯(cuò)誤響應(yīng)
503 (Service Unavailable)- 服務(wù)當(dāng)前無(wú)法處理請(qǐng)求
PUT
不安全但冪等
用客戶(hù)端管理的實(shí)例號(hào)創(chuàng)建一個(gè)資源
通過(guò)替換的方式更新資源
如果未被修改,則更新資源(樂(lè)觀鎖)
200 (OK)- 如果已存在資源被更改
201 (created)- 如果新資源被創(chuàng)建
301(Moved Permanently)- 資源的URI已更改
303 (See Other)- 其他(如焚廊,負(fù)載均衡)
400 (bad request)- 指代壞請(qǐng)求
404 (not found)- 資源不存在
406 (not acceptable)- 服務(wù)端不支持所需表示
409 (conflict)- 通用沖突
412 (Precondition Failed)- 前置條件失斠逼ァ(如執(zhí)行條件更新時(shí)的沖突)
415 (unsupported media type)- 接受到的表示不受支持
500 (internal server error)- 通用錯(cuò)誤響應(yīng)
503 (Service Unavailable)- 服務(wù)當(dāng)前無(wú)法處理請(qǐng)求
DELETE
不安全但冪等
刪除資源
200 (OK)- 資源已被刪除
301 (Moved Permanently)- 資源的URI已更改
303 (See Other)- 其他,如負(fù)載均衡
400 (bad request)- 指代壞請(qǐng)求
404 (not found)- 資源不存在
409 (conflict)- 通用沖突
500 (internal server error)- 通用錯(cuò)誤響應(yīng)
503 (Service Unavailable)- 服務(wù)端當(dāng)前無(wú)法處理請(qǐng)求