REST 即 REpresentational State Transfer 。
State Transfer 爲 「狀態傳輸」 或 「狀態轉移 「,Representational 中文有人翻譯爲」表徵」、」具象」。合起來就是 「表徵狀態傳輸」 或 「具象狀態傳輸」 或 「表述性狀態轉移」api
REST是一種軟件架構風格。主要有如下特色:數組
它基於HTTP協議,並不涉及新的技術,並且與SOAP,XML-RPC相比,更加簡潔、高效。服務器
這裏談談我對這四個設計原則的理解。restful
顯式地使用 HTTP 方法架構
這個是對Web方式的迴歸。經過顯式的調用HTTP的方法(POST、GET、PUT 和 DELETE)來完成資源數據的CURD。負載均衡
無狀態性能
出於對服務更好地支持負載均衡和故障轉移功能、代理和網關的服務器集羣功能設計。.net
公開目錄結構式的 URI翻譯
資源結構的規範化。目錄結構式也是資源結構設計時要考慮的問題,如何設計資源的結構來支持系統的業務?特別是多參數查詢業務。設計
傳輸 XML、JavaScript Object Notation (JSON),或同時傳輸這二者
客戶端請求選用最適合的特定內容類型。服務的構造應該利用內置的 HTTP Accept Header,其中該 Header 的值爲 MIME 類型。
整體來看,REST風格的工做主要集中在系統的設計階段,要求按照其原則來設計資源的結構和API。這有利於後期的維護和擴展。
REST 指的是一組架構約束條件和原則。知足這些約束條件和原則的應用程序或設計就是 RESTful。
HTTP 請求在 RESTful Web 服務中的典型應用
資源 | GET | PUT | POST | DELETE |
---|---|---|---|---|
一組資源的 URI,好比 http://www.example.com/resources/ | 列出 URI 及該資源組中每一個資源的詳細信息 | 使用一組給定的資源替換當前整組資源 | 在本組資源中建立 /追加一個新資源 | 刪除整組資源 |
單個資源的 URI,好比 http://www.example.com/resources/1 | 獲取給定資源的詳細信息 | 替換 / 建立指定的資源,並將其追加到相應的資源組 | 把指定的資源做爲資源組,並在其下建立 / 追加一個新元素,使其隸屬於當前資源 | 刪除指定元素 |
RESTful API 是一套互聯網應用程序的 API 設計理論。
RESTful API 的返回結果應該符合如下規範
GET /collection:返回資源對象的列表(數組) GET /collection/resource:返回單個資源對象 POST /collection:返回新生成的資源對象 PUT /collection/resource:返回完整的資源對象 PATCH /collection/resource:返回完整的資源對象 DELETE /collection/resource:返回一個空文檔