Http在這裏是作爲一個應用層的協議存在的。理解應用層協議至關重要,因爲在很多情況下,我們把Http作爲一個傳輸協議在使用。SOAP中Http就是作爲傳輸協議使用的。
GET
,POST
,PUT
, 還有DELETE
是定義在資源上的操作。有了這些操作,我們無須在定義什麼getXXX, createXXX.....服務端跟客戶對基於Http的交互對參與其中的各種庫,服務器,代理,緩存以及其他工具都具有可見性。這裏所說的可見性是Http協議的至關重用的特性。
可見性的協議可以產生如下的特徵:
緩存
當迴應(respones)相關的資源改變時,緩存的相關回應會自動失效。
樂觀的併發控制
當併發寫發生時,基於過時的資源的寫請求將會被阻止。
內容協商
對資源,可以選擇不同的表現形式。
安全性跟冪等性
某系Http操作可以在資源上反覆操作。
如果協議是不可見性的,不確定存在以上特徵。
爲了確保Http的可見性,Http憑藉如下手段達成目標:
無狀態的交互。Http不需要通過前面的請求或迴應來確定當前請求或迴應的狀態。
使用同一的接口方法:OPTIONS, HEAD, GET, PUT, POST, DELETE, TRACE
使用MIME-like的信封格式來定義不同的資源表示
使用正確的狀態碼來標示請求結果
安全 - 不會有副作用(side effect)
冪等- 客戶端的重複請求產生的影響是相同的
Method Safty Idempotency
Get Yes Yes
Head Yes Yes
Options Yes Yes
Put No Yes
Delete No Yes
Post No No