既然您已經在 Apidog 中設定好了您的 API 專案,是時候開始設計流程了。在您開始設計端點或建立 schema 之前,您需要了解您的 API 應該做什麼以及誰將使用它。這看起來可能很明顯,但跳過這一步驟是 API 設計中最常見的錯誤之一。需求分析是良好 API 設計的基礎。如果沒有明確的需求,您可能會建立沒人需要的端點,遺漏關鍵功能,或者建立一個令人困惑的 API。在本章中,我們將學習如何分析需求並規劃您的 API 結構。我們將全程使用 Pet Store User 模組作為範例,逐步完成從需求到規劃 API 結構的完整過程。
1. 為什麼需求分析很重要#
想像一下在沒有藍圖的情況下建造房屋,或在沒有食譜的情況下做飯。您可能會得到一些東西,但它可能不是您真正需要的。如果沒有需求分析會發生什麼?#
範例: 如果您在不了解使用者需要登入的情況下開始設計 User API,您可能會忘記包含身分驗證端點。然後您稍後將不得不重新設計所有內容。
2. 如何收集和分析需求#
需求分析是一個系統化的過程。讓我們將其分解為幾個步驟:步驟 1:識別商業目標#
首先了解為什麼您要建立這個 API。它解決了什麼問題?問題: 客戶需要一種保存偏好、查看訂單記錄和維護個人資料 的方法
步驟 2:確定 API 使用案例#
3.
查看個人資料: 已登入的使用者想要查看他們的帳戶資訊
4.
更新個人資料: 使用者想要更改他們的電子郵件或電話號碼
步驟 3:識別使用者角色和權限#
步驟 4:了解資料流和商業規則#
3. 識別核心資源#
一旦您了解了需求,下一步就是識別資源——您的 API 將管理的主要實體。什 麼是資源?#
資源是您的 API 管理的事物。在 REST API 中,資源通常是:如何從需求中提取資源#
✅ User — 主要資源(使用者建立帳戶、查看個人資料等)
❌ "Registration" — 這是一個動作,不是資源
等等,那登入呢? 登入是對 User 資源的操作,而不是資源本身。我們將其作為特殊端點處理。資源關係#
資源通常彼此相關。了解這些關係有助於您設計更好的 API。一個 User 可以有許多 Orders(一對多)
一個 User 有一組 Preferences(一對一)
4. 確定所需的操作#
既然您知道了資源,請確定可以對它們執行什麼操作(動作)。標準 CRUD 操作#
| 操作 | HTTP 方法 | 目的 | 範例 |
|---|
| Create | POST | 新增資源 | 建立新使用者 |
| Read | GET | 檢索資源 | 獲取使用者資訊 |
| Update | PUT/PATCH | 修改資源 | 更新使用者個人資料 |
| Delete | DELETE | 移除資源 | 刪除使用者帳戶 |
特殊操作#
Logout — 使 session token 無效
這些不符合標準 CRUD 模式,因此它們有自己的端點。User 資源的操作#
| 操作 | HTTP 方法 | 端點 | 描述 |
|---|
| Create User | POST | /users | 註冊新使用者帳戶 |
| Get User | GET | /users/{id} | 檢索使用者資訊 |
| Update User | PUT | /users/{id} | 更新使用者個人資料 |
| Delete User | DELETE | /users/{id} | 刪除使用者帳戶 |
| Login | POST | /user/login | 驗證並獲取 token |
| Logout | POST | /user/logout | 使 session token 無效 |
注意: 請注意,login/logout 使用 /user(單數)而不是 /users(複數)。這是對於不操作特定資源實例的操作的常見慣例。
5. 規劃端點結構#
現在讓我們將您的資源和操作映射到實際的端點 (URL)。從資源和操作到端點#
資源: User
操作:
- Create → POST /users
- Read → GET /users/{id}
- Update → PUT /users/{id}
- Delete → DELETE /users/{id}
- Login → POST /user/login (特殊操作)
- Logout → POST /user/logout (特殊操作)
RESTful 路徑設計原則#
2.
❌ /users/getById?id=123 (使用查詢參數進行過濾,而不是識別)
3.
✅ /users/{id}/orders (使用者的訂單)
❌ /userOrders?userId=123 (較不 RESTful)
4.
❌ /users/{userId} (多餘 - 我們知道它是使用者 ID)
User 模組的完整端點列表#
POST /users - Create a new user
GET /users/{id} - Get user by ID
PUT /users/{id} - Update user
DELETE /users/{id} - Delete user
POST /user/login - User login
POST /user/logout - User logout
端點分組和組織#
在 Apidog 中,您可以使用以下方式組織端點:標籤 (Tags) — 對端點進行分類(例如 "User", "Authentication")
User Module/
├── User Management/
│ ├── POST /users
│ ├── GET /users/{id}
│ ├── PUT /users/{id}
│ └── DELETE /users/{id}
└── Authentication/
├── POST /user/login
└── POST /user/logout
6. 識別資料需求#
最後,確定每個資源需要什麼資料。哪些欄位是必需的?哪些是可選的?User 資源的資料需求#
createdAt — 帳戶建立時間(由系統生成)
newsletter — 是否接收電子報 (boolean)
notifications — 是否接收通知 (boolean)
欄位關係#
preferences 是 User 內的巢狀物件(不是分開的資源)
id 和 createdAt 是唯讀(由系統設定)
資料驗證需求#
| 欄位 | 類型 | 驗證規則 |
|---|
id | string | 模式: usr_[A-Za-z0-9]{16}, 唯讀 |
email | string | 有效的 email 格式, 唯一, 必需 |
firstName | string | 必需, 最多 50 個字元 |
lastName | string | 必需, 最多 50 個字元 |
phone | string | 可選, 如果提供需為 E.164 格式 |
password | string | 建立時必需, 唯寫, 至少 8 個字元 |
preferences.newsletter | boolean | 可選, 預設: false |
preferences.notifications | boolean | 可選, 預設: true |
createdAt | date-time | 唯讀, ISO 8601 格式 |
7. 整合所有內容:User API 計畫#
POST /users - Create user
GET /users/{id} - Get user
PUT /users/{id} - Update user
DELETE /users/{id} - Delete user
POST /user/login - Login
POST /user/logout - Logout
資料模型(摘要)#
必需:id, email, firstName, lastName, createdAt
身分驗證#
Token 需要用於:GET, PUT, DELETE /users/{id}, 以及 logout
8. 關鍵收穫#
既然您有了 User API 的明確計畫,您準備好設計詳細的資料模型並在 Apidog 中將它們作為 schema 實作。在下一章中,我們將學習如何設計和實作您的資料模型——建立具有確切結構、類型和驗證規則的 schemas。 Modified at 2026-02-12 08:28:40