# API錯誤返回規范有哪些
## 目錄
1. [引言](#引言)
2. [錯誤返回的基本結構](#錯誤返回的基本結構)
3. [HTTP狀態碼規范](#http狀態碼規范)
4. [錯誤碼設計原則](#錯誤碼設計原則)
5. [錯誤信息格式](#錯誤信息格式)
6. [常見錯誤分類](#常見錯誤分類)
7. [國際化與本地化](#國際化與本地化)
8. [安全注意事項](#安全注意事項)
9. [最佳實踐案例](#最佳實踐案例)
10. [總結](#總結)
---
## 引言
在API開發中,規范的錯誤返回機制是保證系統可維護性和用戶體驗的關鍵要素。據統計,超過40%的API相關問題源于不規范的錯誤處理。本文將深入探討API錯誤返回的完整規范體系。
(此處可擴展引入行業背景數據或案例)
---
## 錯誤返回的基本結構
標準的錯誤響應應包含以下核心字段:
```json
{
"code": "INVALID_PARAMETER",
"message": "Invalid email format",
"details": {
"field": "email",
"requirement": "RFC 5322 format"
},
"trace_id": "a1b2c3d4-5678-90ef"
}
| 字段名 | 類型 | 必填 | 說明 |
|---|---|---|---|
| code | string | 是 | 業務錯誤碼 |
| message | string | 是 | 人類可讀的錯誤描述 |
| details | object | 否 | 調試用詳細信息 |
| trace_id | string | 推薦 | 請求追蹤ID(用于日志關聯) |
應嚴格遵循RFC 7231標準:
| 狀態碼 | 類別 | 典型場景 |
|---|---|---|
| 400 | Bad Request | 參數校驗失敗 |
| 401 | Unauthorized | 未提供有效憑證 |
| 403 | Forbidden | 權限不足 |
| 404 | Not Found | 資源不存在 |
| 429 | Too Many Requests | 限流觸發 |
| 500 | Server Error | 未處理的服務器異常 |
| 503 | Service Unavailable | 服務不可用 |
retry_after字段RATE_LIMIT_EXCEEDED)AUTH_/PAYMENT_)建議采用三級分類:
<服務標識>_<模塊>_<具體錯誤>
└── USER_SERVICE
├── AUTH_INVALID_TOKEN
└── PROFILE_EML_EXISTS
| 范圍 | 用途 |
|---|---|
| 000-099 | 系統級錯誤 |
| 100-199 | 認證授權錯誤 |
| 200-299 | 業務校驗錯誤 |
details字段{
"message": {
"en": "Invalid parameter",
"zh-CN": "參數無效"
}
}
{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"details": [
{
"field": "age",
"error": "Must be positive integer"
}
]
}
{
"code": "INSUFFICIENT_BALANCE",
"message": "Account balance不足",
"required_amount": 100.00,
"current_balance": 80.00
}
{
"code": "DATABASE_TIMEOUT",
"message": "系統繁忙,請稍后重試",
"retryable": true,
"retry_after": 30
}
errors:
AUTH_FLED:
en: "Authentication failed"
zh: "認證失敗"
ja: "認証に失敗しました"
信息泄露防護
限流信息暴露
// 不建議
{
"remaining": 0,
"reset_time": "2023-01-01T00:00:00Z"
}
錯誤分類策略
{
"message": "Validation Failed",
"errors": [
{
"resource": "Issue",
"field": "title",
"code": "missing_field"
}
],
"documentation_url": "https://docs.github.com/rest/reference/issues#create-an-issue"
}
{
"error": {
"type": "card_error",
"code": "expired_card",
"doc_url": "https://stripe.com/docs/error-codes/expired-card"
}
}
完整的錯誤返回規范應包含: 1. 標準的HTTP狀態碼 2. 結構化的錯誤體 3. 明確的錯誤分類 4. 完善的安全控制 5. 可擴展的國際化方案
“好的錯誤處理不是事后補救,而是事先設計” —— Martin Fowler
(此處可加入參考文獻和擴展閱讀鏈接) “`
注:實際使用時可根據需要: 1. 補充具體行業的案例 2. 增加各字段的詳細示例 3. 插入架構圖或狀態轉換圖 4. 添加團隊內部的特殊規范要求
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。