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-a和route-b兩個路由做如下外掛程式配置:
body: "{\"hello\":\"world\"}"在*.example.com和test.com兩個網域名稱做如下外掛程式配置:
enable_on_status:
- 429
status_code: 200
headers:
- Content-Type=application/json
body: "{\"errmsg\": \"rate limited\"}"說明
route-a和route-b即在建立網關路由時填寫的路由名稱,當匹配到這兩個路由時,將使用此段配置。*.example.com和test.com用於匹配請求的網域名稱,當發現網域名稱匹配時,將使用此段配置。配置的匹配生效順序,將按照規則的排列順序,匹配第一個規則後生效對應配置,後續規則將被忽略。