跳到主要内容

Pre-function

概述

Pre-function 策略允许用户在请求处理之前执行自定义脚本。该策略使用户能够通过添加、删除或转换请求参数、头部和主体内容来动态修改请求。

Pre-function 策略通常用于:

  • Data Masking: 在敏感数据(如个人识别号码)到达后端之前进行模糊处理。
  • Query String Manipulation: 动态修改或过滤查询参数。
  • Token Validation: 实现身份验证和安全逻辑。
  • Routing Control: 根据请求属性修改路由决策。

配置详情

Pre-function 策略由一个 code editor 组成,用户在其中编写脚本。该界面包括以下组件:

代码编辑器

editor 是用户可以为 API 请求生命周期的不同执行阶段编写和修改自定义 Lua 脚本的主要区域。代码编辑器中有四个可用的选项卡:

  • Access: 在此输入的代码在访问阶段执行,允许用户操作请求级逻辑,如身份验证、头部、路径重写等。
  • Header Filter: 用于在响应返回给客户端之前修改响应头。
  • Body Filter: 使得可以操作响应主体,便于转换或掩盖响应内容。
  • Log: 用于在请求处理后根据请求或响应数据实现日志记录行为。

每个选项卡都包含一个专用的代码编辑器,并可以访问帮助加速开发的代码片段和示例。

备注

代码必须在每个选项卡中单独编写和保存,如果要利用多个执行阶段。

预函数代码编辑器

代码片段(预定义代码块)

Snippets 部分提供了预定义的代码块,用户可以将其插入到编辑器中。这些代码块帮助用户快速实现常用的请求修改,而无需从头编写代码。

代码片段列表:

SnippetsDescription
JSON 解析器加载和处理 JSON 格式的请求体。
获取请求原始体在处理之前检索整个请求体。
设置服务请求原始体在将请求转发到后端之前修改请求体。
获取请求方法检索 HTTP 方法(GET、POST 等)。
获取请求路径获取完整的请求路径。
获取请求头从特定请求头中提取值。
设置请求头动态修改或添加请求头。
设置响应退出终止请求并返回自定义响应。
设置服务主机动态更改目标服务器。
设置服务请求方案修改请求方案(http 或 https)。
设置服务请求路径在将请求发送到后端之前更改请求路径。

预函数代码片段

示例部分

本节包含预定义的示例脚本,展示了预函数策略的实际实现。这些示例作为模板,帮助用户快速实现常见场景。

示例列表:

ExamplesDescription
数据掩码在请求负载中掩盖敏感信息。当韩国居民注册号作为查询字符串中的值出现时,用“SSN-DATA”替换并继续路由。
查询字符串操作移除所有查询字符串,除了“service”键及其对应的值。
根据后端路由条件过滤参数:
- 当路由目标后端地址为A时,所有查询参数将被完全移除。
- 然而,如果路由目标后端地址为B,则仅允许特定的一组查询参数;其他参数将被丢弃。
令牌验证使用正则表达式实现“Authorization: bearer xxxxxxxx”令牌的自定义验证。并且,特定的Method + Path组合不执行承载令牌验证。
路由允许用户编写代码,以便他们可以继续路由或根据情况立即处理失败。

预功能示例

应用示例

用户可以直接在代码编辑器中修改脚本或使用预定义的代码片段。点击示例会打开一个弹出编辑器,允许进一步自定义。