REST 原

REST

REST(Representational State Transfer),是 Roy Fielding 博士於 2000 年在他的博士論文《Architectural Styles and the Design of Network-based Software Architectures》中提出來的一種爲分佈式超媒體系統設計的軟件架構風格。REST 提出了一些設計概念和準則:

  • 所有事物都被抽象爲資源(resource)
  • 每個資源對應一個唯一的資源標識(resource identifier)
  • 使用統一接口對資源進行操作
  • 對資源的各種操作不會改變資源標識
  • 所有操作無狀態

特徵

  • 客戶端-服務器架構 -- Client–server architecture

    提供服務的服務器和使用服務的客戶端需要被隔離對待。

  • 無狀態 -- Stateless

    服務器不在客戶端多個請求之間存儲共享的上下文信息,即客戶端發出的每個請求必須包含服務器處理該請求所需的全部信息。

  • 可緩存 -- Cacheability

    爲了提高網絡效率,響應應該可以被標示成可緩存的或是不可緩存的。

  • 分層系統 -- Layered system

  • 統一接口 -- Uniform interface

    數據操作(CRUD:Create,Read,Update,Delete)分別對應於 HTTP 方法:POST,GET,PUT,DELETE。

  • 按需編碼(可選) -- Code on demand (optional)

特點

  • 基於 HTTP 協議,利用 HTTP 本身特徵,如 HTTP 動詞、狀態碼等
  • 面向資源,通過 URI 暴露
  • 對資源的獲取、創建、修改和刪除對應 HTTP 協議的 GETPOSTPUTDELETE 方法
  • 連接無狀態
  • 利用 Cache 機制提升性能
  • 與傳統的 SOAP 和 XML-RPC 相比更加簡潔

設計準則

  • 網絡上所有事物都被抽象爲資源(resource),資源是數據和表現形式的組合
  • 每個資源對應一個唯一的資源標識符(resource identifier)
  • 通過通用的連接器接口對資源進行操作(generic connector interface)
  • 對資源的各種操作不會改變資源標識符
  • 所有操作都是無狀態的(stateless)

RESTful

符合 REST 架構約束的 Web 服務 API 稱爲 RESTful API。

基於 HTTP 的 RESTful API 定義需要滿足以下要求:

  • 一個基礎 URL,如 http://api.example.com/resources
  • 定義狀態轉換數據元素的媒體類型
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章