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 以完成删除。