【WEB】Web API 設計原則

  • 12
  • 0
  • Web
  • 2024-09-24

研究怎麼樣設計出好的Web API,從Request format、Response format、甚至於架構。

使用API 的核心思想

Client Server 之間只透過API 交換必要資料

而不是在ServerSideRender 後把整個HTML 畫面高頻率的傳送到Client。
如此可以將職責切乾淨之外,也可以提升校能。
透過API 的設計,也讓多平台應用程式不須重工、更好維護。

2008 年,Leonard Richardson 為 Web API 提出了下列 成熟度模型

  • 層級 0:定義一個 URI,而所有作業都是此 URI 的 POST 要求。
  • 層級 1:為個別資源建立個別 URI。
  • 層級 2:使用 HTTP 方法來定義資源上的作業。
  • 層級 3:使用超媒體 (HATEOAS,如下所述)。

設計架構

RESTful  是一種設計架構,符合設計架構的API 就稱為RESTful API。架構有兩大核心原則:

  1. 統一介面: 具有HTTP Methods、route與明確定義的request/response format。
  2. 無狀態: Server與Client不儲存連接歷史,每個請求都是獨立的。

在API Path 中以名詞表示主要作用的目標,以HTTP Methods 區分動作:

GET: Read
POST: Create, Upload
PUT: Update 全部
PATCH: Update 部分
DELETE: Delete

POST https://adventure-works.com/orders // Good,POST 到orders 代表新增order,
POST https://adventure-works.com/create-order // 避免,新增的英文有很多種,以簡潔為重,故盡量不要在path 中寫動詞

注意事項

避免實體被揭露

避免建立跟資料實體(entity) 一模一樣資料結構的API 介面,以免有內部實作公開造成資安問題。

避免過度嵌套

例如 /customers/1/orders/99/products,表示取得顧客1訂單編號99 中的商品,當複雜度提升會造成難以維護,故應該讓 URI 保持相對簡單。

References:
https://jianline.com/restful-api/
 https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/