全部產品
Search
文件中心

API Gateway:custom-response外掛程式

更新時間:Jan 08, 2025

custom-response外掛程式支援配置自訂的響應,包括自訂HTTP應答狀態代碼、HTTP應答頭,以及HTTP應答Body。可以用於Mock響應,也可以用於判斷特定狀態代碼後給出自訂應答,例如在觸發網關限流策略時實現自訂響應。本文介紹如何配置custom-response外掛程式。

外掛程式類型

傳輸協議。

配置欄位

名稱

資料類型

填寫要求

預設值

描述

status_code

number

選填。

200

自訂HTTP應答狀態代碼。

headers

array of string

選填。

-

自訂HTTP應答頭,Key和 Value 用=分隔。

body

string

選填。

-

自訂HTTP應答Body。

enable_on_status

array of number

選填。

-

匹配原始狀態代碼,產生自訂響應,不填寫時,不判斷原始狀態代碼。

配置樣本

Mock應答情境

status_code: 200
headers:
- Content-Type=application/json
- Hello=World
body: "{\"hello\":\"world\"}"

根據該配置,請求將返回自訂應答如下。

HTTP/1.1 200 OK
Content-Type: application/json
Hello: World
Content-Length: 17

{"hello":"world"}

觸發限流時自訂響應

enable_on_status: 
- 429
status_code: 302
headers:
- Location=https://example.com

觸發網關限流時一般會返回429狀態代碼,這時請求將返回自訂應答如下。

HTTP/1.1 302 Found
Location: https://example.com

從而實現基於瀏覽器302重新導向機制,將限流後的使用者引導到其他頁面,比如可以是一個CDN上的靜態頁面。

如果希望觸發限流時,正常返回其他應答,參考Mock應答情境配置相應的欄位即可。

對特定路由或網域名稱開啟

route-aroute-b兩個路由做如下外掛程式配置:

body: "{\"hello\":\"world\"}"

*.example.comtest.com兩個網域名稱做如下外掛程式配置:

  enable_on_status: 
  - 429
  status_code: 200
  headers:
  - Content-Type=application/json
  body: "{\"errmsg\": \"rate limited\"}"
說明
  • route-aroute-b即在建立網關路由時填寫的路由名稱,當匹配到這兩個路由時,將使用此段配置。

  • *.example.comtest.com用於匹配請求的網域名稱,當發現網域名稱匹配時,將使用此段配置。

  • 配置的匹配生效順序,將按照規則的排列順序,匹配第一個規則後生效對應配置,後續規則將被忽略。