RESTful Web 服務四種操做POST/DELETE/PUT/GET

REST ( REpresentational State Transfer ),State Transfer 爲 "狀態傳輸" 或 "狀態轉移 ",Representational 中文有人翻譯爲"表徵"、"具象",合起來就是 "表徵狀態傳輸" 或 "具象狀態傳輸" 或 "表述性狀態轉移"。數據庫

在 REST 中的資源 (Resource) 表明整個網絡上的資源。安全

HTTP Method 與 CURD 數據處理操做對應網絡

HTTP方法spa

數據處理翻譯

說明blog

POSTci

Create資源

新增一個沒有id的資源io

GETtable

Read

取得一個資源

PUT

Update

更新一個資源。或新增一個含 id 資源(若是 id 不存在)

DELETE

Delete

刪除一個資源

 

RESTFUL WEB SERVICE

RESTful Web Service (又稱 RESTful Web API) 是一個使用 HTTP 並符合 REST 原則的 Web 服務。咱們知道,經過 URL 能夠傳送 GET 請求,在 表單指定 method="GET|POST" 來送出請求。但咱們要處理 PUT 或 DELETE 的請求呢?經過 RESTful 咱們能夠簡單 URI 來定義資源並和 HTTP 方法配合使用。

Resource 與 HTTP 方法的對應

資源

資源說明

GET

PUT

POST

DELETE

http://www.cnblogs.com/Products/

Products是一組資源集合

列出 該組資源集合中每一個資源的詳細信息

更新 當前整組資源

新增 或附加一個新資源。該操做傳回新資源的URL

刪除 整組資源

http://www.cnblogs.com/Products/1

Products/1是單個資源

取得 指定的資源的詳細信息

更新 或新增指定的資源

新增 或附加一個新元素

刪除 指定的元素

 

在 RESTful 每一個資源有本身獨立的 URI, Client 從資源集合或單個資源開始進入,無論是資源集合或單個資源,咱們都能與 HTTP 方法配合使用,例如,GET 下載,PUT 更新,POST 新增,DELETE 刪除。

GET操做是安全的。所謂安全是指無論進行多少次操做,資源的狀態都不會改變。好比我用GET瀏覽文章,無論瀏覽多少次,那篇文章還在那,沒有變化。固然,你可能說每瀏覽一次文章,文章的瀏覽數就加一,這不也改變了資源的狀態麼?這並不矛盾,由於這個改變不是GET操做引發的,而是用戶本身設定的服務端邏輯形成的。

PUT,DELETE操做是冪等的。所謂冪等是指無論進行多少次操做,結果都同樣。好比我用PUT修改一篇文章,而後在作一樣的操做,每次操做後的結果並無不一樣,DELETE也是同樣。順便說一句,由於GET操做是安全的,因此它天然也是冪等的。

POST操做既不是安全的,也不是冪等的,好比常見的POST重複加載問題:當咱們屢次發出一樣的POST請求後,其結果是建立出了若干的資源。

安全和冪等的意義在於:當操做沒有達到預期的目標時,咱們能夠不停的重試,而不會對資源產生反作用。從這個意義上說,POST操做每每是有害的,但不少時候咱們仍是不得不使用它。

還有一點須要注意的就是,建立操做可使用POST,也可使用PUT,區別在於POST 是做用在一個集合資源之上的(/uri),而PUT操做是做用在一個具體資源之上的(/uri/xxx),再通俗點說,若是URL能夠在客戶端肯定,那麼就使用PUT,若是是在服務端肯定,那麼就使用POST,好比說不少資源使用數據庫自增主鍵做爲標識信息,而建立的資源的標識信息究竟是什麼只能由服務端提供,這個時候就必須使用POST。

相關文章
相關標籤/搜索