API Academy
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Designing APIs
  • 歡迎
  • 目錄
  • API 學院
    • Get Started
      • 什麼是 API?
      • API 如何運作?
      • 如何呼叫 API?
      • 如何閱讀 API 文件?
      • 章節總結
    • API Fundamentals
      • API 基礎知識:概覽
      • 方法與路徑
      • 參數
      • 請求 Body
      • 回應
      • API 規格與 OAS
      • 章節總結
    • Working with APIs
      • 使用 API:概覽
      • 根據規格發送請求
      • 環境與變數
      • 串聯多個端點
      • 處理 Auth
      • 處理 API 簽名
      • 腳本介紹
      • 章節總結
    • Mocking APIs
      • Mocking API:概覽
      • Smart Mock
      • Mock 預期結果
      • Cloud Mock
      • Mock 腳本
      • 章節總結
    • Designing APIs
      • 設計 API:概覽
      • API 設計介紹
      • 建立您的第一個 API 專案
      • 分析需求並規劃您的 API
      • 設計資料模型
      • 設計端點
      • 使用組件與可重用性
      • 設定與 Auth
      • API 設計指南
      • 章節總結
    • Developing APIs
      • 開發 API:概覽
      • 設定:安裝您的 AI 程式碼助手
      • 快速入門:30 分鐘內從規格到運行的 API
      • 了解生成的程式碼
      • 使用 Apidog 測試您的 API
      • 部署:將您的 API 上線
      • 章節總結
    • Testing APIs
      • 測試 API:概覽
      • 快速入門:您的第一個測試場景
      • 整合測試與資料傳遞
      • 動態值
      • 斷言與驗證
      • 流程控制:If, For, ForEach
      • 資料驅動測試
      • 性能測試
      • 測試報告與分析
      • CI/CD 整合
      • 排程任務與自動化
      • 進階測試策略
      • 章節總結
    • API Documentations
      • API 文件:概覽
      • 發布您的第一個 API 文件
      • 自訂文件外觀
      • 給消費者的互動功能
      • 進階發布設定
      • 管理 API 版本
      • 章節總結
    • Advanced API Technologies
      • 進階 API 技術:概覽
      • GraphQL
      • gRPC
      • WebSocket
      • Socket.IO
      • Server-Sent Events
      • SOAP
      • 章節總結
    • API Lifecycle
      • API 生命周期:概覽
      • API 生命周期的階段
      • API 治理
      • API 安全最佳實踐
      • 監控與分析
      • API 版本策略
      • API 的未來
      • 章節總結
    • API Security
      • API 安全性:概覽
      • API 安全性基礎知識
      • 身份驗證 vs. 授權
      • 了解 OAuth 2.0 和 OpenID Connect
      • JSON Web Tokens (JWT)
      • OWASP API 安全 Top 10
      • 加密與 HTTPS
      • 章節總結
    • API Tools
      • API 工具:概覽
      • API 工具的演變
      • API Clients
      • 命令列工具 (cURL, HTTPie)
      • API 設計和文件工具
      • API Mocking 工具
      • API 測試工具
      • 一體化 API 平台
      • 章節總結
    • API Gateway
      • API Gateway:概覽
      • 什麼是 API Gateway?
      • API Gateway 的關鍵功能
      • API Gateway vs 負載平衡器 vs 服務網格
      • 流行 API Gateway 解決方案
      • BFF (Backend for Frontend) 模式
      • 章節總結
HomePetstore APIExplore more APIs
HomePetstore APIExplore more APIs
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
🌐 繁體中文
  • 🌐 English
  • 🌐 繁體中文
  1. Designing APIs

API 設計介紹

到目前為止,您已經學會了如何理解和使用現有的 API。但是如果您需要建立自己的 API 呢?您如何設計一個清晰、一致且容易讓其他開發者使用的 API?
API 設計是規劃和建立定義 API 如何運作的結構、端點和資料模型的過程。就像建造建築物需要在施工前繪製藍圖一樣,設計 API 需要在實作前進行仔細的規劃。
在本文中,我們將探討 API 設計的基本概念和原則,重點關注 RESTful API——這是您將遇到的最常見的 API 類型。

1. 什麼是 API 設計?#

API 設計是定義以下內容的過程:
您的 API 將暴露什麼資源(如使用者、訂單或產品)
可以對這些資源執行什麼操作(建立、讀取、更新、刪除)
資料如何結構化(存在什麼欄位,它們是什麼類型)
客戶端如何與您的 API 互動(端點、方法、參數)
將 API 設計想像成設計餐廳的菜單:
菜單(API 規格)告訴顧客有什麼可供選擇
品項(資源)是您可以點的東西
描述 (schemas) 解釋每個品項包含什麼
點餐過程(端點)定義如何下單
一個設計良好的 API 就像一份組織良好的菜單:清晰、一致且易於理解。

2. RESTful API 設計原則#

大多數現代 API 遵循 REST (Representational State Transfer) 原則。REST 不是一種技術或標準,而是一套使 API 可預測且易於使用的架構原則。

基於資源的設計 (Resource-Based Design)#

REST API 圍繞著資源建構——您可以與之互動的事物。資源通常是名詞(如 users, orders, pets),而不是動詞。
好的範例:
/users — 使用者的集合
/users/{id} — 特定使用者
/orders — 訂單的集合
避免:
/getUsers — 使用動詞
/createUser — 使用動詞
/userData — 命名不清

使用 HTTP 方法表達操作#

REST API 使用 HTTP 方法來表達您想要做什麼,而不是將動作放在 URL 中:
HTTP 方法含義範例
GET檢索資料GET /users/{id} — 獲取一個使用者
POST建立資料POST /users — 建立一個使用者
PUT取代資料PUT /users/{id} — 更新整個使用者
PATCH部分更新PATCH /users/{id} — 更新部分欄位
DELETE移除資料DELETE /users/{id} — 刪除一個使用者
請注意,相同的路徑 (/users/{id}) 如何與不同的方法一起使用以執行不同的操作。這是一個關鍵的 REST 原則。

無狀態 (Stateless)#

每個 API 請求都應包含處理它所需的所有資訊。伺服器不應該需要記住先前的請求。這使得 API:
更容易擴充 — 任何伺服器都可以處理任何請求
更可靠 — 如果一台伺服器故障,另一台可以接手
更容易理解 — 每個請求都是獨立的

統一介面 (Uniform Interface)#

REST API 使用一致、可預測的結構:
標準 HTTP 方法 (GET, POST, PUT, DELETE)
標準狀態碼 (200 OK, 404 Not Found 等)
標準資料格式(通常是 JSON)
一致的 URL 模式 (/resource/{id})
這種一致性使得 REST API 易於學習和使用。

3. API 設計最佳實踐#

除了 REST 原則之外,以下是一些使您的 API 更專業且對開發者更友善的最佳實踐:

命名慣例#

使用清晰、一致的名稱:
對集合使用複數名詞:/users, /orders
使用带有連字號或底線的小寫字母:/user-preferences 或 /user_preferences
具描述性但簡潔:/users 比 /u 或 /user_accounts_management 更好
Pet Store User API 的範例:
✅ Good:  POST /users
✅ Good:  GET /users/{id}
❌ Bad:   POST /createUser
❌ Bad:   GET /getUserById/{id}

URL 結構#

保持 URL 具有階層性和邏輯性:
/users/{id} — 獲取特定使用者
/users/{id}/orders — 獲取使用者的訂單
/users/{id}/preferences — 獲取使用者偏好
避免過深層的巢狀結構:
✅ Good:  /users/{id}/orders/{orderId}
❌ Bad:   /users/{id}/orders/{orderId}/items/{itemId}/details/{detailId}

版本控制#

API 會隨著時間改變。版本控制允許您在不破壞現有客戶端的情況下更新您的 API。
常見方法:
URL 版本控制:/v1/users, /v2/users
Header 版本控制:在請求 Header 中包含版本
查詢參數:/users?version=1
對於大多數 API,URL 版本控制是最簡單和最常見的方法。

錯誤處理#

始終返回有意義的錯誤訊息和適當的 HTTP 狀態碼:
狀態碼含義範例
200成功請求成功完成
201已建立資源已成功建立
400錯誤的請求無效的輸入資料
401未經授權需要身分驗證
403禁止權限不足
404未找到資源不存在
422無法處理的實體驗證錯誤
500內部伺服器錯誤伺服器錯誤
好的錯誤回應:
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Email address is required",
    "field": "email"
  }
}

4. API 優先 (API-First) vs 程式碼優先 (Code-First)#

在建立 API 時,您有兩種主要方法:

程式碼優先方法#

1.
編寫程式碼(後端實作)
2.
從程式碼生成 API 文件
3.
與客戶端分享 API
優點:
初始開發較快
文件與程式碼始終同步
缺點:
API 設計受限於實作
較難獲得早期回饋
前端和後端團隊無法平行工作

API 優先方法(推薦)#

1.
設計 API(端點、schema、回應)
2.
建立規格 (OpenAPI/Swagger)
3.
與團隊分享以獲得回饋
4.
生成 Mock API 供前端開發使用
5.
根據規格實作後端
優點:
更好的 API 設計(不受實作限制)
團隊可以平行工作(前端使用 Mocks)
早期回饋和驗證
前端和後端之間的清晰契約
缺點:
需要前期規劃
規格需要維護
Apidog 提倡 API 優先方法,因為它能帶來更好的設計和更順暢的團隊協作。

5. 完整的 API 設計流程#

設計 API 是一個循序漸進的過程。這是典型的工作流程:
1.
分析需求
了解 API 需要做什麼
識別使用者和使用案例
確定商業規則
2.
識別資源
主要實體是什麼?(使用者、訂單、產品)
它們之間的關係是什麼?
3.
設計資料模型
每個資源需要什麼欄位?
資料類型是什麼?
驗證規則是什麼?
4.
規劃端點
需要什麼操作?(CRUD)
URL 路徑是什麼?
將使用什麼 HTTP 方法?
5.
定義 Schemas
建立詳細的資料模型
定義請求和回應結構
指定驗證規則
6.
設定身分驗證
使用者將如何驗證?
哪些端點需要身分驗證?
7.
建立規格
以 OpenAPI 格式記錄所有內容
新增範例和描述
8.
驗證和測試
審查設計
使用 Mock API 測試
從團隊獲得回饋
9.
迭代和完善
根據回饋進行改進
更新規格
在接下來的章節中,我們將使用 Pet Store User 模組作為範例,詳細介紹這些步驟中的每一個。

6. 關鍵收穫#

在您開始建立自己的 API 之前,了解 API 設計原則至關重要:
1.
API 設計是關於在實作之前規劃結構、端點和資料模型。
2.
REST 原則提供了一種一致、可預測的 API 設計方式:
基於資源(名詞,而非動詞)
HTTP 方法表達操作
無狀態請求
統一介面
3.
最佳實踐包括:
清晰的命名慣例
邏輯的 URL 結構
版本控制策略
有意義的錯誤處理
4.
API 優先方法導致更好的設計並啟用平行開發。
5.
設計是一個過程,涉及分析、規劃、設計、驗證和迭代。

現在您已經了解了 API 設計的基礎知識,準備好開始實際的設計流程了。第一步是在 Apidog 中建立您的 API 專案,這將作為所有設計工作的工作區。
讓我們從 建立您的第一個 API 專案 開始。
Modified at 2025-12-29 09:35:19
Previous
設計 API:概覽
Next
建立您的第一個 API 專案
Built with