iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
自我挑戰組

API 全攻略系列 第 14

Day 14: API 錯誤處理設計

  • 分享至 

  • xImage
  •  

前言

在設計 API 的過程中,錯誤處理是一個非常重要的環節。清楚且一致的錯誤回應能讓開發者快速理解發生了什麼問題,並採取正確的處理方式。今天我們就來探討 API 錯誤處理的最佳實踐。


為什麼需要良好的錯誤處理?

  • 提升開發者體驗 :使用 API 的人能快速了解錯誤原因。
  • 維護系統安全 :避免回傳過多內部細節,減少潛在攻擊風險。
  • 統一規格 :讓錯誤回應保持一致,減少混亂。

錯誤回應的基本結構

一個設計良好的 API 錯誤回應通常包含以下幾個欄位:

  • status :HTTP 狀態碼(如 400, 404, 500)
  • error :簡短的錯誤描述
  • message :詳細的錯誤訊息(對開發者友好)
  • path :發生錯誤的 API 路徑
  • timestamp :錯誤發生時間

範例:JSON 錯誤回應

假設使用者請求了一個不存在的資源,伺服器可以回傳如下內容:

{
  "status": 404,
  "error": "Not Found",
  "message": "The requested resource was not found.",
  "path": "/api/v1/users/999",
  "timestamp": "2025-09-04T10:15:30Z"
}

常見錯誤類型與設計

1.驗證錯誤(Validation Error)

  • 狀態碼:400 Bad Request
  • 用於輸入資料格式錯誤或缺少必要欄位。
{
  "status": 400,
  "error": "Bad Request",
  "message": "Email field is required."
}

2.授權錯誤(Unauthorized / Forbidden)

  • 狀態碼:401 Unauthorized / 403 Forbidden
  • 用於 API Key、Token 錯誤或權限不足。
{
  "status": 401,
  "error": "Unauthorized",
  "message": "Invalid API key provided."
}

3.伺服器錯誤(Server Error)

  • 狀態碼:500 Internal Server Error
  • 用於非預期錯誤,通常只回應簡單訊息,避免暴露內部細節。
{
  "status": 500,
  "error": "Internal Server Error",
  "message": "An unexpected error occurred. Please try again later."
}

小結

錯誤處理設計的最佳實踐:

  • 使用一致格式 :所有錯誤回應應保持相同結構。
  • 提供足夠資訊 :讓開發者能理解錯誤,但避免過度暴露伺服器內部細節。
  • 使用正確的 HTTP 狀態碼 :例如 400 表示客戶端錯誤,500 表示伺服器錯誤。
  • 支援多語言或錯誤代碼 :提供錯誤代碼,方便前端根據代碼做客製化處理。

良好的錯誤處理設計能大幅提升 API 的可用性與安全性。透過清晰的錯誤結構與正確的狀態碼,開發者可以更快找到問題並解決。


上一篇
Day 13: API 分頁與排序設計
下一篇
Day 15: 建立第一個簡單的 API(Node.js / Express)
系列文
API 全攻略15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言