Request Transformer Advanced
概述
Request Transformer Advanced 策略允许在 API 请求到达后端之前动态修改请求。该策略通过 five tag operations 提供转换能力,确保请求符合所需的结构:
- Remove Tag:删除特定的头部、查询参数或主体字段。
- Rename Tag:在保留字段值的同时更改字段名称。
- Replace Tag:使用模板、字符串或函数修改现有值。
- Add Tag:在头部、查询参数或主体中引入新字段。
- Append Tag:向现有字段添加数据,而不是替换它们。
该策略在将 structuring, securing, and optimizing API 请求转发到后端之前特别有用。
配置详情
参数配置
添加标签后,用户可以使用这些模板作为值:
您可以使用当前请求的任何请求头、查询参数和捕获的 URI 组作为模板来填充支持的配置字段。
- Request Parameter: 头部
- Template:
$(headers.<header_name>), $(headers["<Header-Name>"]) 或 $(headers["<header-name>"])
- Request Parameter: 查询字符串
- Template:
$(query_params.<query-param-name>) 或 $(query_params["<query-param-name>"])
- Request Parameter: 捕获的 URI
- Template:
$(uri_captures.<group-name>) 或 $(uri_captures["<group-name>"])
- Request Parameter: 共享变量
- Template:
$(shared.<variable-name>) 或 $(shared["<variable-name>"])
要转义模板,请将其放在引号内并传递到另一个模板中。例如:
$('$(something_that_needs_to_escaped)')
Note: 插件在转换之前创建请求头、查询字符串和捕获的 URI 的不可变表。因此,任何在模板中使用的参数的更新或删除不会影响模板的渲染值。
一个完整的 Lambda 示例,用于在头部值前加上“Basic”前缀(如果尚未存在):
Authorization:$((function()
local value = headers.Authorization
if not value then
return
end
if value:sub(1, 6) == "Basic " then
return value -- 已经正确形成
end
return "Basic " .. value -- 添加了正确的前缀
end)())
Note: 尤其是在像上面示例那样的多行模板中,请确保不要添加任何尾随空格或新行。因为这些将位于占位符之外,它们将被视为模板的一部分,因此将附加到生成的值上。环境是沙盒化的,这意味着 Lambda 将无法访问任何库函数,除了字符串方法(如上面示例中的 sub())。
添加 "移除" 标签
- Function: 从请求中移除一个字段。
-
Configuration Steps:
- 从下拉菜单中选择 "Remove"。
- 输入要删除的 field name。
- 选择适用的范围 (Headers, Query String, Body)。
- 点击 Save 应用标签。
添加 "重命名" 标签
- Function: 在保持其值不变的情况下重命名一个 existing 请求字段。
-
Configuration Steps:
- 从下拉菜单中选择 "Rename"。
- 输入 current field name 和 new name。
- 选择适用的范围 (Headers, Query String, Body)。
- 点击 Save 应用标签。
添加 "替换" 标签
- Function: 使用 templates, strings, or functions 更改现有字段的值。
-
Configuration Steps:
- 从下拉菜单中选择 "Replace"。
- 输入要替换的 field name。
- 选择 new value 类型 (Template, String, Function)。
- 输入 replacement value。
- 选择适用的范围 (Headers, Query String, Body)。
- 点击 Save 应用标签。
添加 "添加" 标签
- Function: 在请求中插入一个新字段。
-
Configuration Steps:
- 从下拉菜单中选择 "Add"。
- 输入 field name 和 new value。
- 选择 data type: Template – 使用预定义的占位符; String – 静态文本; Function – 基于动态逻辑的值。
- 选择适用的范围 (Headers, Query String, Body)。
- 点击 Save 应用标签。
添加 "附加" 标签
- Function: 将额外数据附加到 existing 字段,而不是替换它。
-
Configuration Steps:
- 从下拉菜单中选择 "Append"。
- 输入 field name 和 data to append。
- 选择 data type (Template, String, Function)。
- 选择适用的范围 (Headers, Query String, Body)。
- 点击 Save 应用标签。
更新标签
- Function: 允许修改现有标签。
-
Configuration Steps:
- 在标签表中点击一个 tag。
- update popup 会显示当前标签的详细信息。
- 修改必要的值(例如,字段名称、新值、数据类型)。
- 点击 Save 应用更改。
- 重新部署 API 以确保更改生效。
删除标签
- Function: 从策略配置中移除现有标签。
-
Configuration Steps:
- 在标签表中找到 tag。
- 点击标签名称旁边的 (x) icon。
- 会出现一个 confirmation popup。
- 点击 Check 以确认删除。
- 重新部署 API 以完成删除。