前后置操作
前置和后置操作是 Apifox 的关键功能。在发送请求时,你可以通过前置操作动态控制请求,或通过后置操作处理接收到的响应。
在 Apifox 中,你可以通过可视化的拖拽操作轻松完成大部分前置和后置操作,简便易用。
开始使用
在 Apifox 中使用前置和后置操作的步骤如下:
前置/后置操作的作用
前置/后置操作可以实现以下各种功能。
前置操作
设置请求参数和请求体的值:处理将发送给接口的输入数据。
设置请求头:为 API 请求指定必要的头部信息,如 Content-Type、Accept、Authorization 等。
为请求添加认证:包括添加访问受保护 API 所需的认证令牌、API 密钥或其他凭据。
从数据库获取值作为请求参数:从数据库中提取相关数据,用动态或预定义的值填充 API 请求。
加密请求:通过加密请求参数来保护敏感信息,确保数据传输的安全性。
后置操作
编写断言:校验 API 返回的响应是否符合预期结果,可能包括检查状态码、响应消息、特定数据值等。
从响应中提取变量:提取响应中的数据并将其存储为变量,以便在后续请求中使用,有助于维护 API 测试流程的状态和连续性。
将数据写入数据库:将 API 测试过程中生成的数据存储或更新到数据库中,适用于需要持久化数据以供后续分析或参考的场景。
可视化响应数据:通过生成报告、图表或其他可视化表示方式,帮助分析和理解 API 响应数据,从而洞察系统的行为和性能。
前置/后置操作列表
Apifox 支持以下前置/后置操作:
**断言**:仅在后置操作中可用。允许定义校验规则,检查响应数据是否符合预期值或条件,支持多种断言类型,如状态码、响应体、请求头等。
**提取变量**:仅在后置操作中可用。可以从响应 (JSON、XML 或纯文本) 中提取值并存储为变量。支持使用 JSONPath 和 XPath 表达式来定位响应中的特定部分,这些变量可在后续请求或其他操作中使用。
**数据库操作**:在前置和后置操作中均可使用。允许连接数据库并执行 SQL 查询,查询结果可存储为变量以供进一步处理。支持多种数据库类型,包括关系型和非关系型数据库。
**自定义脚本**:在前置和后置操作中均可使用。提供一个脚本环境,允许编写 JavaScript 代码。脚本可以访问接口请求、响应数据以及环境变量,适用于实现复杂逻辑,尤其是那些无法通过可视化操作轻松完成的任务。
**公共脚本**:可用于前置和后置操作。允许创建可复用的脚本片段,供多个操作或场景共享。适用于封装常用逻辑或实用函数,提升脚本的复用性和维护性。
**等待时间**:可用于前置和后置操作。可以在发送请求前后引入延迟或等待期,适用于模拟真实场景或处理异步响应,确保系统按预期的时间顺序执行操作。
前置/后置操作的执行顺序
Apifox 中的前置和后置操作可以在多个层级进行配置:
- 运行页/接口用例级别:默认级别,设置的操作仅影响当前运行页或接口用例。
- 接口级别:设置的操作会应用于该接口的所有用例(请求)。
- 目录级别:设置的操作会影响该目录下的所有接口。
一个请求中的后置操作可能如下图所示:
在上面的截图中,前两个操作被标记为 “继承自父级”。右侧的标签显示它们位于根目录和当前接口级别。这些操作在当前运行页中只能选择是否启用,无法直接编辑。如需编辑,点击操作项可导航到相应的层级进行修改。
“继承自父级” 的操作默认会折叠,你可以通过点击前面的复选框来选择是否执行它们。
最后两个操作——一个提取变量,一个数据库操作,是在当前运行页中新增的,可以在此页进行编辑。
变量替换
你可能注意到,在所有前置操作的末尾,有一个名为 “变量替换 & 继承自父级” 的步骤。
在 Apifox 中,“变量替换” 是一个特殊的前置操作,专门用于将 {{variable}}
这样的变量占位符替换为当前环境中定义的实际值。
大多数前置操作会在变量替换之前执行,这是 Apifox 中的默认执行顺序。然而,某些操作 (例如接口签名脚本) 需要在变量替换后才能生效。在这种情况下,你需要手动将这些操作移到 “变量替换 & 继承自父级” 步骤之后。
此外,你还可以在父级前置操作部分,将操作拖动到变量替换之后。这些操作随后会出现在 “变量替换 & 继承自父级” 步骤中的 “继承自父级” 部分。
执行顺序
单个请求的操作执行顺序如下图所示: