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。