Rest/RestFul API

RESTful API是一種設計風格,這種風格使API設計具有整體一致性,易於維護、擴展,並且充份利用HTTP協定的特點。


REST架構風格最重要的架構約束有6個:

  • 客戶-伺服器(Client-Server) 通信只能由客戶端單方面發起,表現為請求-響應的形式。

  • 無狀態(Stateless) 通信的會話狀態(Session State)應該全部由客戶端負責維護。

  • 緩存(Cache) 響應內容可以在通信鏈的某處被緩存,以改善網絡效率。

  • 統一接口(Uniform Interface) 通信鏈的組件之間通過統一的接口相互通信,以提高交互的可見性。

  • 分層系統(Layered System) 通過限制組件的行為(即,每個組件只能「看到」與其交互的緊鄰層),將架構分解為若干等級的層。

  • 按需代碼(Code-On-Demand,可選) 支持通過下載並執行一些代碼(例如Java Applet、Flash或JavaScript),對客戶端的功能進行擴展。


Http常用名詞

  • GET: 讀取資源 (safe & idempotent)
  • PUT: 替換資源 (idempotent)
  • DELETE: 刪除資源 (idempotent)
  • POST: 新增資源;也作為萬用動詞,處理其它要求
  • PATCH: 更新資源部份內容
  • HEAD: 類似GET,但只回傳HTTP header (safe & idempotent)

Http回傳

  • 2xx: 成功
    200 OK: 通用狀態碼
    201 Created: 資源新增成功
    202 Accepted: 請求已接受,但尚在處理中
    204 No Content: 請求成功,但未回傳任何內容
    
  • 3xx: 重新導向
    301 Moved Permanently: 資源已移至它處
    303 See Other: 回傳的內容可在它處取得(例如在用戶端發送了一個POST請求之後)
    304 Not Modified: 請求的資源並未修改(通常是用戶端發送了帶有If-Modified-Since或If-None-Match表頭的請求)
    
  • 4xx: 用戶端錯誤(用戶端不應retry原始請求)
    400 Bad Request: 通用狀態碼
    401 Unauthorized: 用戶端尚未驗證*
    403 Forbidden: 用戶端被禁止此請求*
    404 Not Found: 請求的資源不存在
    405 Method Not Allowed: 不支援請求的HTTP方法
    406 Not Acceptable: 不支援請求所要求的內容類型*(Accept表頭)
    415 Unsupported Media Type: 不支援請求所用的內容類型*(Content-Type表頭)
    
  • 5xx: 伺服器錯誤(用戶端可合理retry)
    500 Internal Server Error: 工程師要找bug了
    501 Not Implemented: 用戶端的請求目前未支援(也就是將來有可能支援)
    502 Bad Gateway: 上游的伺服器未回傳正確結果,一般是gateway或proxy server才會回傳此狀態碼
    503 Service Unavailable: 暫停服務(也就是過不久就會恢復服務──如果一切順利的話)
    504 Gateway Timeout: 上游的伺服器逾時,一般是gateway或proxy server才會回傳此狀態碼
    

results matching ""

    No results matching ""