前后置、断言、提取变量、数据库操作功能

本文介绍了API开发中的前置操作和后置操作,包括设置请求头、验证参数、变量替换、接口签名处理、状态码验证、数据库操作(支持SQL和NoSQL)以及断言功能。这些功能旨在提升API调试和测试效率,确保接口正确性。
摘要由CSDN通过智能技术生成

前置操作和后置操作都是 API 请求在发送和响应过程中执行的脚本,主要用于在发起 API 请求前和获得响应后完成验证或执行某些操作,目的是为了提高 API 调试和测试的效率,并确保接口的正确性。

前置操作

前置操作是在 API 请求之前执行的脚本代码,可以用于做以下事情:

  1. 设置 API header(请求头)

    它们可用于设置请求的请求头、请求正文、验证请求参数和配置身份验证等。

  2. 设置 API 参数

    前置操作能够访问环境变量、全局变量和请求变量中的数据。前置操作也可以帮助请求者了解请求参数以及如何处理它们。

  3. 添加身份验证

    例如基本身份验证或 OAuth。在发送 API 请求之前,前置操作可以被用来获取访问令牌或者其他权限,确保 API 请求发送的是有效的和合法的请求。

变量替换

“变量替换”功能通常用于在发送 API 请求前,作用是把接口请求参数里的所有的已引用变量(包括动态值)替换成真实的请求内容。通常用于处理接口签名等转换场景。此时主要涉及以下两种场景:

  1. 通过脚本 set 变量

该场景下的操作需要放在“变量替换”之前运行,否则通过该脚本 set 的变量就不会对当前接口的请求参数生效。

  1. 接口签名脚本

该场景下的脚本需放在“变量替换”之后,这样脚本才能获取到该接口实际请求的参数值,否则获取到的参数值是变量替换之前的模板数据。

如需了解更多,请参考《接口签名如何处理?》

后置操作

后置操作能够利用获取来自接口响应的数据,例如状态代码、header、body 等信息,进行二次处理:

  1. 验证 API 响应的状态码和响应时间是否符合预期。

  2. 验证 API 响应的内容,如 JSON 或 XML 数据。

  3. 从 API 响应中提取数据,并将其用于后续请求。

  4. 自动提取响应中需要的数据。

层级关系

前后置操作都可以在接口目录中设置父级操作。父级操作可以被继承到该目录下的所有接口中,适用于需要在多个接口中执行相同的前置操作的场景,例如鉴权,变量替换等。 接口本身可以灵活调整各操作的运行顺序。

子级接口可以选择是否采用父级操作。

当子级接口下又存在多个接口时,若选择关闭引用,次级接口将默认关闭该自定义脚本。

断言

“后置操作”支持添加断言,你可以对接口返回的数据或响应时间设置断言,以判断当前接口返回是否符合预期。

设置断言

打开 Apifox 中的某条接口,在“后置操作”页中设置断言。例如输入 $.data.status

提示

根对象使用 $ 符号进行表示,而无需区分是对象还是数组。

查看结果

运行后即可查看断言结果:

提取变量

在一些具有明显上下游关系的接口中,有时需要将 A 接口的返回数据作为 B 接口的请求参数

比如在创建宠物信息场景下,需要将 A 接口返回的 pet_id 中的数据作为后续接口的请求参数,然后在 B 接口中的「后置操作」中添加「提取变量」功能,基于 A 接口返回的结果自动提取数据并设置为变量(临时变量/环境变量/全局变量),方便其它接口运行的时候直接使用。

指定变量类型

打开 Apifox 中的某条接口,在“后置操作”页中添加“提取变量”,变量类型选择为“环境变量”

接口间相互传递数据

例如当前 B 接口的请求参数依赖于 A 接口返回的数据,现希望 B 接口在发送请求的同时能自动获取 A 接口返回的数据并作为请求参数。实现思路如下:

  1. A 接口在后置操作中添加提取变量功能,将返回的数据自动提取至变量中。
  2. B 接口对应的参数值直接引用已提取的变量。

A 接口

打开 A 接口用例的”后置操作“页,在后置操作中添加提取变量功能。将接口返回 Response JSON 数据里的 token 值提取到名为 petid 的变量中。

B 接口

在 B 接口中的请求参数中直接填写 {{petid}},即可在请求中引用上一步骤中所创建的数值。

若不确定是否正确引用了 A 接口所生成的数据,可以在 B 接口的前置操作中添加以下自定义脚本:

var petid = pm.environment.get("petid");

console.log(petid)

这样就可以在控制台中查看已引用的变量值。

 

 提取A接口请求baby中的参数

 

 JavaScript语法如下:

// 一、变量Body:存储raw中,请求Body的参数
var body = pm.request.body.raw;

// 二、将Body转化为Json格式的数据,使用 JSON.parse()
var body_json = JSON.parse(body);

//三、提取请求Body中的 systemId 参数值
mobile = body_json.mobile;

// 四、【验证参数值】使用 console.log() 打印参数值
// console.log("提取的请求Body的mobile参数值为:", mobile );

// 五、设置为环境变量
pm.environment.set("mobile_phone", mobile);

 

 提取到环境变量里面,可以进行引用

新建 / 操作数据库

“前置/后置操作”支持添加数据库。在 Apifox 中选择并连接数据库后,就可以对该数据表进行增删查改和其他操作。支持在控制台中打印由数据库操作返回的结果,也可以将其提取为变量,以便在其它接口请求参数、断言、自定义脚本和读写其它数据库等多种场景中使用。

支持以下关系型数据库(SQL):

支持以下非关系型数据库(NoSQL):

  • MongoDB
  • Redis

新建数据库

  1. 在“前置/后置操作“中选择“数据库操作”,然后点击新建数据库连接。不同的环境默认使用相同的数据库连接配置,同时也支持为每个环境分别进行独立的配置。

  1. 点击“数据库连接”下拉框中的“数据库连接管理”选项,然后点击右上角的新建按钮。

数据库连接

  1. 选择数据库类型,然后填写数据库的连接信息。

提示

Apifox 重视您的数据安全。数据库地址、端口、用户名、 密码、数据库名仅存储在客户端本地,不会同步到云端。即便是同一团队内,成员之间也不会相互同步数据库的连接信息,每个团队成员需要自己手动设置数据库。

操作数据库

非关系型数据库

关于非关系型数据库(MongoDB)的操作方法,请参考此文档

关系型数据库

如果你连接的是关系型数据库,那么可以直接在命令框中输入 SQL 命令直接进行操作。例如输入 SELECT * FROM user LIMIT 2 命令,然后勾选“控制台打印结果”按钮,底部的控制台会出现对应的结果。

将结果提取为变量

支持使用 JSONPath 表达式提取数据库操作返回的结果。以上图为例,$[0].name 表示取到返回数据数组中的第一个元素的 name 字段值 Apifox,然后将其提取为临时变量,变量名 name1

关于更多提取变量的方法,你可以阅读《JSON Path 文档》。 

关于如何使用已提取的变量,你可以阅读《环境变量 / 全局变量 / 临时变量》

 

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值