首頁 >後端開發 >Golang >KrakenD 順序端點錯誤回應

KrakenD 順序端點錯誤回應

PHPz
PHPz轉載
2024-02-09 08:50:17621瀏覽

KrakenD 顺序端点错误响应

php小編蘋果為您帶來了一個關於KrakenD順序端點錯誤回應的介紹。 KrakenD是一個高效能的API網關,但在使用過程中,可能會遇到一些錯誤。其中,順序端點錯誤回應是常見問題。本文將詳細解釋順序端點錯誤回應的原因和解決方法,幫助您更好地應對這個問題,並提升API網關的穩定性和效能。

問題內容

krakend版本:2.2.1 go版本:go1.19.3

我想使用 krakend 的順序功能將順序請求傳送到兩個不同的端點。

簡單總結一下我的案例:

  • 這兩個服務可以回傳成功 (200) 和錯誤 (4**)。
  • 如果第一個服務回傳錯誤,我可以在郵差中看到該錯誤作為回應。 (這是我想要的情況)
  • 如果在第一個服務返回成功 (200) 後第二個服務返回錯誤 (4**),我會在等待查看第二個服務返回的錯誤時看到來自郵遞員的成功回應。

順序端點範例:

#
{
   "endpoint": "/companies/validate",
   "method": "GET",
   {{ include "input_headers.txt" }},
   "backend": [
    {
      "host": ["{{ .service.credential_service_url }}"],
      "url_pattern": "/tokens/validate",
      "method": "GET",
      "extra_config": {
         "backend/http": {
            "return_error_code": true
         }
      }
    },
    {
      "host": ["{{ .service.company_service_url }}"],
      "url_pattern": "/companies/{resp0_companyId}/validate",
      "method": "GET",
      "extra_config": {
         "backend/http": {
            "return_error_code": true
         }
      }
    }
   ],
   "extra_config": {
      "proxy": {
         "sequential": true
      }
   }
 }

ide日誌

郵差回覆

如您所見,第一個服務工作正常,第二個服務回傳錯誤,但郵差回應回傳成功。

解決方法

這是 KrakenD 的預期行為。

當您執行多個呼叫時,如果至少有一個請求成功,KrakenD 將傳回任何可用內容以及 200 狀態碼。但作為交換,您會收到一個標題 X-KrakenD-Complete: false 告訴您某些事情失敗了。 您可以在此處閱讀有關聚合的更多資訊 p>

由於您使用的是順序代理,因此當第一個請求失敗時,無需執行任何其他操作,因為下一個順序呼叫將自動中止。因此,所有內容都會失敗,KrakenD 無法返回任何內容,這就是您獲得所需失敗的原因。

在另一種情況下,由於第一個呼叫有效,KrakenD 有一些東西要返回,並且您收到部分資料。

您應該檢查您的客戶端 X-KrakenD-Complete 標頭的內容來決定要做什麼

以上是KrakenD 順序端點錯誤回應的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除