資源可以是“訂單”“發(fā)票”,甚至“一次換地址的意圖”。先拿「開發(fā)任務(wù)管理系統(tǒng)KPI」給需求量化:
再按下面步驟建模:
/profile 單例、/users 集合、/users/{id}/orders 子集合 | 粒度 | 優(yōu)點(diǎn) | 痛點(diǎn) | 適用場景 |
|---|---|---|---|
| 細(xì)粒度 | 靈活組合 | API 調(diào)用爆炸 ?? | 前端按需拼裝 |
| 粗粒度 | 減少往返 | 字段冗余 | 移動(dòng)端弱網(wǎng) |
實(shí)戰(zhàn)技巧
業(yè)務(wù)邏輯泄漏典型癥狀:
/orders,再 POST /payments,再 PATCH /inventory——一旦順序錯(cuò)就數(shù)據(jù)不一致 ? 解藥:用“意圖”資源收編流程
POST /addressChangeRequests
{
"customerId": "C-123",
"newAddress": { "street": "長安街 1 號(hào)" }
}
服務(wù)器端異步處理、發(fā)事件、更新讀模型,消費(fèi)者只 polling /addressChangeRequests/{id} 即可 ?
設(shè)計(jì)完后,把 JSON 樣例拖進(jìn)「代碼文檔生成器」,3 秒生成帶示例的 OpenAPI 片段,前端同事直呼舒服 ??
| 動(dòng)詞風(fēng)格 | 名詞風(fēng)格 | 推薦理由 |
|---|---|---|
| POST /enrollCustomer | POST /customerEnrollments | 可查詢、可跟蹤、可復(fù)用 ?? |
把“注冊流程”建模為 /customerEnrollments 資源,能天然支持 KYC 狀態(tài)輪詢:
GET /customerEnrollments/E-456
→ { "status": "pendingKyc", "kycUrl": "https://kyc.example.com" }
上線前,讓「代碼審查助手」再掃一遍:
Location? 現(xiàn)金存款涉及驗(yàn)證、記賬、短信通知等多步,直接 PATCH /accounts/{id}/balance 顯然不合理。
建模為資源:
POST /transactions
{
"type": "cashDeposit",
"accountId": "A-789",
"amount": 1000.00
}
返回 201 Created + Location: /transactions/T-987,后續(xù)步驟全部封裝在服務(wù)端,消費(fèi)者只需輪詢即可 ??
好的 REST API 像“順滑的樂高”——顆粒度剛剛好、拼裝不割手、說明書隨時(shí)更新。先把「開發(fā)任務(wù)管理系統(tǒng)KPI」定好,再用 4 款代碼級(jí)提示詞一路護(hù)航,你就能交付既“好用”又“好養(yǎng)”的 API!??
原文鏈接: https://mayvenstudios.com/blog/designing-effective-rest-apis-guide-software-developers