REST(Representational State Transfer)由Roy Fielding於2000年在他的博士論文中引入和定義,REST是用於設計分佈式系統的架構風格,它不是標準,而是一組約束,例如無狀態,具備客戶端/服務器關係和統一接口,REST與HTTP並不嚴格相關,但最常與它相關聯。json
GET
、POST
、PUT
和DELETE
)。使用HTTP方法將CRUD(建立、檢索、更新、刪除)操做映射到HTTP請求。安全
檢索信息,GET
請求必須是安全且冪等的,這意味着不管使用相同參數重複多少次,結果都是相同的,它們可能有反作用,但用戶不指望它們,所以它們對系統的操做不是相當重要的,請求也能夠是部分的或有條件的。服務器
檢索ID爲1的地址:架構
GET /addresses/1
請求URI上的資源對提供的實體執行某些操做,POST
一般用於建立新實體,但也可用於更新實體。app
建立一個新地址:異步
POST /addresses
將實體存儲在URI中,PUT
能夠建立新實體或更新現有實體,PUT
請求是冪等的,冪等性是PUT
與POST
請求的指望之間的主要區別。分佈式
修改ID爲1的地址:設計
PUT /addresses/1
注意:PUT替換現有實體,若是僅提供數據元素的子集,則其他數據元素將替換爲空或
null
。
僅更新URI上實體的指定字段,PATCH
請求既不安全也不是冪等(RFC 5789),這是由於PATCH
操做沒法確保整個資源已更新。code
PATCH /addresses/1
請求刪除資源,可是,沒必要當即刪除資源,它多是異步或長時間運行的請求。xml
刪除ID爲1的地址:
DELETE /addresses/1
狀態碼代表HTTP請求的結果。
1XX
— 信息2XX
— 成功3XX
— 重定向4XX
— 客戶端錯誤5XX
— 服務器錯誤Accept
和Content-Type
HTTP頭可用於描述HTTP請求中發送或請求的內容,若是客戶端正在請求JSON格式的響應,則能夠將Accept
設置爲application/json
,相反,在發送數據時,將Content-Type
設置爲application/xml
會告訴客戶端請求中發送的數據是XML。