close




RESTful API 是指實踐 REST Representational State Transfer 精神的 API 設計風格,其核心精神在於借用 HTTP 協定做為基礎,讓 API 規格簡單一致,大致有以下特色 :
  • 透過 URI 指定要存取或操作的資源
  • 可使用 QueryString,但只應拿來傳遞額外過濾條件或參數,不應包含識別資源的鍵值
  • 使用 HTTP 方法 POST、GET、PUT、DELETE 對應到建立、讀取、更新、刪除等動作。
  • 也有人主張 PUT 是 Relace (Create 或 Update),另外增加 PATCH 用於部分更新( Partial Update )
  • 透過 Accept Header 指明可接收的內容格式,例如:XML 或是 JSON
  • 伺服器透過 HTTP 狀態碼回傳執行結果,例如:200 成功、401 存取被拒、404 找不到資源、500 伺服器錯誤
而 REST 概念的提出者 Roy Fielding 是 HTTP 規範的主要作者及 Apache HTTP Server 專案的發起人之一,這也是讓 RESTful API 風格備受推崇的原因之一。

RESTful API 設計準則與實務經驗

RESTful 是一種「軟體架構風格」

RESTful-Triangle (REST 金三角) 概念:

 RESTful-Triangle 右邊這個三角形描述了以下三個重要的概念: 

  1. Nouns 名詞:用來定義你的網址 URL,記住,每一個網路上的資源應該僅有一個唯一的識別位置,就像你的房子有獨一無二的「住址」一樣。 
  2. Verbs 動詞:描述了對 Nouns 名詞 (資源 URL) 的操作動作,在 HTTP 1.1 的實作當然就是 HTTP Method。比如用 GET 取得文章內容、用 DELETE 刪除文章等等行為。 
  3. Content Types 資源呈現方式:比如取得某一個 URL 文章的 HTML 格式、或者 XML 格式,同樣的 URL 資源可以有不同型態的表現方式。


RESTful 的優點如下所列:
  • 瀏覽器即可以作為 client 端
  • 可以更高效地利用 cache 來達到更快的回應速度
  • 界面與資料分離
  • 節省伺服器的計算資源
  • 可重用! web/android/ios 都可以用, 無痛轉換!

RESTful 的要求:
  • client - server 架構
  • 分層系統
  • 利用快取機制增加效能
  • server-side: 在 GET 資源時,若該資源並沒有被變更,就可以利用 cache 機制減少 query,並且加快回應速度
  • client-side: 透過 client 端 cache 記錄 cache 版本,
  • 若向 server 要求資源時發現 server 最新版與 cache 相同,
  • 則 client 端直接取用本地資源即可,不需要再做一次查詢
  • 省機器運算及流量 = 省錢
  • 通訊協定具有無狀態性
arrow
arrow
    全站熱搜

    tttt 發表在 痞客邦 留言(0) 人氣()