请求应答改写插件支持对HTTP请求和响应的内容进行定制化修改,例如修改请求的Header、Query和Form等参数,以及调整响应的状态码和Header等信息。
1. 概述
请求应答改写插件允许您配置一系列内容修改策略,策略包含修改的类型和参数信息,API网关将根据您提供的策略配置对HTTP请求或响应的内容进行改写。
HTTP请求支持的修改类型包括:
addRequestParameterIfAbsent
:添加请求参数,如果参数已存在则不做处理,需提供参数的位置、名称以及参数值;putRequestParameter
:添加请求参数,如果参数已存在则覆盖原有的参数值,需提供参数的位置、名称以及参数值;removeRequestParameter
:删除请求参数,需提供参数的位置和名称。
HTTP响应支持的修改类型包括:
setResponseStatusCode
:设置响应的状态码,该状态码会覆盖后端服务返回的状态码;addResponseHeaderIfAbsent
:添加响应的Header,如果Header已存在则不做处理,需提供参数名和参数值;putResponseHeader
:添加响应的Header,如果Header已存在则覆盖原有的参数值,需提供参数名和参数值;removeResponseHeader
:移除响应的Header,需提供参数名。
修改请求时,支持的参数位置包括Header、Query以及Form等;修改响应时,仅支持Header参数。
在将请求传递给后端服务之前,API网关会先执行插件中配置的Request改写策略,该过程会在参数映射操作(如果有配置的话)完成之后进行;在向客户端返回后端服务的响应之前,API网关会执行插件中配置的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号之前购买的专享实例,如果不生效需提交工单升级实例版本。