请求应答改写插件(仅专享实例)

请求应答改写插件支持对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号之前购买的专享实例,如果不生效需提交工单升级实例版本。