比較小的 API Contract,通常活得比較久

在 API 設計裡,真正耐用的往往不是功能最多的回應格式,而是邊界夠小的 contract。

我以前寫 API 比較容易犯一種錯:想一次把前端未來可能會需要的東西都放進 response。表面上很貼心,實際上是把耦合提前做大。

一個回應欄位越多,就越像對外承諾越多。之後只要其中一個欄位的語意改了,前端、行銷頁、匯出流程、快取策略,都可能一起被牽動。

回應越大,承諾越大

所以我現在更偏好小一點的 contract。它有幾個好處:

小 contract 的幾個好處

  • 變更影響範圍小
  • 文件更容易寫清楚
  • 前後端對資料責任更明確
  • 測試可以更聚焦,不會每次都比對一大串 JSON

我的判斷方式很簡單

我現在會用一個簡單的判斷:如果某個欄位只是「因為也許之後會用到」,那就先不要放。等真正有使用場景,再用新的 endpoint、query option 或 resource 層去擴充。

小 contract 的另一個價值在於討論。當 response 很大時,團隊其實很難看清楚這個 API 真正服務的是哪個畫面或哪個任務;當欄位夠少時,需求討論會回到比較本質的問題:這個頁面到底需要知道什麼?

這種做法看起來保守,但通常更快。因為你少掉的是未來會回頭維護的負擔,而不是今天少寫的幾行欄位。