Skip to content
ADP
API Design PrincipleBETA

[ADP-201] HTTP 狀態碼 504

504 閘道超時規範

概述

504 閘道超時狀態碼表示伺服器在作為閘道或代理時,未能及時從上游伺服器接收到完成請求所需的回應。此狀態碼在 RFC 9110 的 15.6.5 節中定義。

使用時機

504 狀態碼應(SHOULD)在以下情況下使用:

  1. 微服務架構: 當 API 閘道或服務聚合器無法在指定的超時期限內從一個或多個後端服務獲得回應時。
  2. 代理伺服器: 當伺服器作為代理,無法從上游伺服器及時獲得回應時。
  3. 負載平衡器: 當負載平衡器在超時期限內未能從後端伺服器接收到回應時。
  4. 外部服務依賴: 當 API 依賴於未能及時回應的外部服務(例如第三方 API)時。
  5. 長時間運行的請求: 當請求需要大量處理時間並超過預定義的超時期限時。
  6. 網路問題: 當存在導致延遲或封包丟失的網路問題,阻止了及時回應時。

回應範例 (HTTP Problem)

以下是根據 HTTP Problem Details 標準(RFC 9457)格式化的 504 閘道超時回應範例;假設我們有一個與 Firebase API 整合的服務,但來自 Firebase 的回應超時:

http
HTTP/1.1 504 Gateway Timeout
Content-Type: application/problem+json
Retry-After: 120
Content-Length: 350
{
  "type": "https://example.com/problems/gateway-timeout",
  "title": "閘道超時",
  "status": 504,
  "detail": "伺服器在作為閘道或代理時,未能從 Firebase 及時接收到回應。",
  "instance": "/resources/12345"
}

參考資料