跳到主要内容

利用预执行脚本发送一个请求

在文档 “预执行脚本” 中,我们了解到,预执行脚本的作用主要是:

  • 编写JS函数等实现复杂计算;
  • 变量的打印
  • 定义、获取、删除、清空环境变量
  • 定义、获取、删除、清空全局变量
  • 获取请求参数
  • 动态添加、删除一个header请求参数
  • 动态添加、删除一个query请求参数
  • 动态添加、删除一个body请求参数
  • 发送HTTP请求 本文主要介绍如何在预执行脚本里预先发送一个请求。

使用场景

我们可以在预执行脚本里先发送一个请求,并将请求结果绑定到变量,然后在当前接口的请求参数中使用这个变量。

发送请求的方法 $.ajax

注意

$.ajax 为异步方法,这将会导致在预执行脚本执行 $.ajax 方法时,可能会在请求发送完成后才执行完毕。
Apipost 7.0.4 版本后(含),支持通过 await 来将异步方法转换为同步方法,以保证先执行此函数完成后,再发送接口。

请求示例

1、发送一个简单的GET请求

您可以在Apipost客户端,通过以下脚本实现一个简单的请求。

在Apipost 预执行脚本里发送一个请求

异步调用
$.ajax({
method:"GET",
url:"https://echo.apipost.cn/get.php",
success:function(response){
console.log(response);
apt.variables.set("bigint", response.bigint);
}
})
同步调用 (Apipost 7.0.4+ 支持)
await $.ajax({
method:"GET",
url:"https://echo.apipost.cn/get.php",
success:function(response){
console.log(response);
apt.variables.set("bigint", response.bigint);
}
})

以上脚本是一个很初级的请求脚本,含义如下:

向指定URL发送一个GET请求,并将响应数据(json)的bigint赋给环境变量bigint。

这样的话,当前接口就可以在请求参数里使用变量bigint了。如图:

image.png

2、发送一个content-type为application-json 的请求

异步调用
$.ajax({
url:"https://echo.apipost.cn/get.php",
"content-type":"application-json",
data:JSON.stringify({"email":"admin@admin.com", "password":"密码"}),
success:function(response){
console.log(response);
apt.variables.set("bigint", response.bigint);
}
})
同步调用 (Apipost 7.0.4+ 支持)
await $.ajax({
url:"https://echo.apipost.cn/get.php",
"content-type":"application-json",
data:JSON.stringify({"email":"admin@admin.com", "password":"密码"}),
success:function(response){
console.log(response);
apt.variables.set("bigint", response.bigint);
}
})

注意:content-type:application-json时,请求json对象参数需要用 JSON.stringify 处理成json字符串再发送。

3、发送一个content-type为x-www-form-urlencoded 的请求

异步调用
$.ajax({
url:"https://echo.apipost.cn/get.php",
async:false,
"content-type":"application/x-www-form-urlencoded",
data:{"email":"admin@admin.com", "password":"密码"},
success:function(response){
console.log(response);
apt.variables.set("bigint", response.bigint);
}
})
同步调用 (Apipost 7.0.4+ 支持)
await $.ajax({
url:"https://echo.apipost.cn/get.php",
async:false,
"content-type":"application/x-www-form-urlencoded",
data:{"email":"admin@admin.com", "password":"密码"},
success:function(response){
console.log(response);
apt.variables.set("bigint", response.bigint);
}
})

其他请求方式雷同,这里就不再赘述了。