請求應答改寫外掛程式支援對HTTP請求和響應的內容進行定製化修改,例如修改請求的Header、Query和Form等參數,以及調整響應的狀態代碼和Header等資訊。
1. 概述
請求應答改寫外掛程式允許您配置一系列內容修改策略,策略包含修改的類型和參數資訊,API Gateway將根據您提供的策略配置對HTTP請求或響應的內容進行改寫。
HTTP請求支援的修改類型包括:
addRequestParameterIfAbsent:添加請求參數,如果參數已存在則不做處理,需提供參數的位置、名稱以及參數值。putRequestParameter:添加請求參數,如果參數已存在則覆蓋原有的參數值,需提供參數的位置、名稱以及參數值。removeRequestParameter:刪除請求參數,需提供參數的位置和名稱。
HTTP響應支援的修改類型包括:
setResponseStatusCode:設定響應的狀態代碼,該狀態代碼會覆蓋後端服務返回的狀態代碼。addResponseHeaderIfAbsent:添加響應的Header,如果Header已存在則不做處理,需提供參數名和參數值。putResponseHeader:添加響應的Header,如果Header已存在則覆蓋原有的參數值,需提供參數名和參數值。removeResponseHeader:移除響應的Header,需提供參數名。
修改請求時,支援的參數位置包括Header、Query以及Form等。修改響應時,僅支援Header參數。
在將請求傳遞給後端服務之前,API Gateway會先執行外掛程式中配置的Request改寫策略,該過程會在參數映射操作(如果有配置的話)完成之後進行。在向用戶端返回後端服務的響應之前,API Gateway會執行外掛程式中配置的Response改寫策略,該過程會在錯誤碼映射外掛程式(如果有配置的話)處理之後進行。
2. 配置樣本
可以選擇JSON或YAML格式來配置您的外掛程式,兩種格式的Schema相同,可以搜尋yaml to json轉換工具來進行配置格式的轉換,YAML格式的模板如下:
---
addRequestParameterIfAbsent: # 若Request中不存在該參數,則添加,否則保持不變
- name: userId # 參數名
value: 123456 # 參數值
location: query # 參數位置
putRequestParameter: # 向Request中添加參數,已存在的參數會被覆蓋
- name: name
value: Jack
location: header
removeRequestParameter: # 刪除Request中的參數
- name: address
location: form
setResponseStatusCode: 200 # 設定Response的狀態代碼
addResponseHeaderIfAbsent: # 若Response的Header中不存在該參數,則添加,否則保持不變
- name: age
value: 18
putResponseHeader: # 向Response的Header中添加參數,已存在的參數會被覆蓋
- name: name
value: Alice
removeResponseHeader: # 刪除Response Header中的參數
- name: phone以上述配置中的addRequestParameterIfAbsent和putResponseHeader為例:
addRequestParameterIfAbsent:網關向後端服務轉寄請求時,如果請求的Query中不包含userId,那麼網關會添加該參數,參數值為123456,但如果userId已經存在,那麼網關不會對其進行修改。
putResponseHeader:無論後端響應的Header中是否包含age,網關都會在Header中添加age參數,參數值為18,原有的age參數值會被覆蓋。
3. 使用限制
請求應答改寫外掛程式僅適用於專享執行個體。
2024-04-02之前購買的專享執行個體,如果不生效需提交工單升級執行個體版本。