iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
佛心分享-IT 人自學之術

API 實戰入門從設計到驗證系列 第 11

Day11 API 錯誤處理與例外設計

  • 分享至 

  • xImage
  •  

在API的世界裡,錯誤難以避免,良好的錯誤處理設計不僅幫助使用者快速理解問題,也能大幅降低排查成本,若回傳的錯誤訊息模糊不清,開發者常常需要花更多時間來猜測問題所在。

設計錯誤回應時,通常會包含以下元素:

  • HTTP狀態碼:清楚告訴請求的結果,如400代表請求錯誤,401代表未授權,500代表伺服器錯誤。
  • 錯誤代碼(Error Code):系統內部的錯誤編號,方便快速定位問題來源。
  • 錯誤訊息(Message):用簡單易懂的文字描述問題,例如「缺少必要的參數email」。
  • 詳細資訊(Details,可選):提供額外說明或解決方法,例如「請確認輸入的日期格式為YYYY-MM-DD」。

一個設計良好的錯誤回應範例如下:

{
  "error": {
    "code": 400,
    "message": "缺少必要的參數 email",
    "details": "請在請求中加入 email 欄位"
  }
}

除了基本的格式,錯誤設計還需要考慮以下幾點:

  • 錯誤分類:可以將錯誤大致分為用戶端錯誤(Client Error)與伺服器錯誤(Server Error)。例如404資源不存在通常屬於用戶端問題,而503服務不可用則屬於伺服器端,清楚區分能幫助開發者快速判斷責任歸屬。

  • 使用者體驗:錯誤訊息應避免過於技術化,例如「NullPointerException」對一般開發者沒有幫助,反而應回應「伺服器處理資料時發生問題,請稍後再試」,讓訊息既精確又易懂。

  • 安全性考量:錯誤訊息不能洩漏過多內部細節,例如完整的SQL語法錯誤或伺服器堆疊訊息,否則可能被惡意利用,建議只保留必要的資訊,詳細的除錯紀錄則寫入伺服器日誌(Log),而不是直接暴露給使用者。

一致且明確的錯誤處理,能讓API更容易被使用與測試,開發者不必靠猜測,也能透過工具快速重現與修正錯誤,同時兼顧安全性與使用體驗,進一步提升系統的可靠性。


上一篇
Day10 API 資源與資源導向設計
下一篇
Day12 API 文件與可讀性
系列文
API 實戰入門從設計到驗證12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言