简介
Apipost是一个用于Web开发的接口调试工具,由国人开发。
官网:
官方文档:
目前版本:7.0
类似的产品还有,不过个人感觉功能上不如Apipost好用。
基本功能
要在Apipost调试接口,需要先创建项目:
Apipost从6开始,一部分功能从本地搬到了web上,所以创建项目时会跳转到web端。
项目管理也是在Web端。
创建好项目后就可以为目标接口创建一个接口调用进行测试了:
关于设置参数、请求头,以及不同形式的传参等都很简单,这里不再赘述。
全局header
前后端分离的项目往往会使用请求头中传递令牌的方式进行身份验证,而非使用Cookie。在以前使用此类工具调试接口时可能需要对每个接口都设置一个请求头来传递令牌,这样就非常麻烦。
Apipost可以设置全局header,可以通过它来传递令牌,这样就不需要为每个调用单独设置。
环境变量
一般而言,一个项目的主域名是不变的,可以在Apipost中将其设置为环境变量,这样每个接口都不需要再写一遍localhost:8080
之类的了。
这样做还有一个好处,可以设置多个环境,来应对多环境开发。
需要注意的是,不同环境的令牌是不同的,所以切换完环境要记得重新执行登录接口请求令牌,并在全局变量中进行替换。
执行脚本
可以在Apipost中编写js脚本,在特定接口调用前和后执行一些特殊的工作。
比如我需要统计某个接口返回的一个数组的元素个数:
示例中的脚本内容如下:
console.log(response.json.data.list.length)
需要注意的是,Apipost定义的response
变量包含所有的返回信息,比如响应头是response.header
,所以对应的json格式的返回值就要从response.json
中读取。
更新 token
这里还可以更进一步,用全局变量+执行脚本来实现登录接口调用后“自动”更新全局header中的令牌:
示例中的脚本如下:
apt.environment.set("token", response.json.data);
要注意的是,Apipost似乎并不能直接调用预定义变量修改全局header的值,所以只能采用这种将header值绑定为全局变量,再用脚本修改全局变量的方式完成自动化。
这里header具体使用环境变量还是全局变量都是可以的,考虑到多环境切换,局部变量更合适一些。
自动登录
通常,访问令牌都有一个有效时长,超时没有操作会自动失效,此时再请求接口会返回错误信息,比如 HTTP CODE 401,表示登录状态已失效:
可以利用执行脚本实现登录状态失效后“自动重新登录”:
console.log(response.raw.status)
if (response.raw.status = 401) {
//登录状态失效,重新登录
const baseURL = apt.environment.get("baseURL");
const phone = apt.environment.get("phone")
try {
let response = await apt.sendRequest({
url: baseURL + "login/sendCode/" + phone,
method: "PUT"
});
let resJson = response.json()
console.log(resJson)
if (!resJson.success) {
console.log("自动登录脚本出错" + resJson.message)
return;
}
// 发送验证码成功,用验证码登录
const code = resJson.data;
await $.ajax({
url: baseURL + "login",
method: "POST",
headers: {
"content-type": "application/json"
},
timeout: "10000",
data: JSON.stringify({
"phone": phone,
"captcha": code
}),
success: function (response) {
console.log(response)
if (!response.success) {
console.log("自动登录脚本出错:" + response.message);
return;
}
const token = response.data;
// 将 token 写入环境变量
apt.environment.set("token", token);
}
}
);
} catch (err) {
console.error(err);
}
}
接口文档
通常对于Spring Boot项目,更推荐使用Swagger生成接口文档,但某些时候可能因为这样或者那样的原因不能那样做,作为一个替代方案,此时我们可以使用ApiPost来生成接口文档:
像上面展示的那样,生成的接口文档可以通过ApiPost的分享链接分享出去,非常好用。
以上就是我认为Apipost中比较实用的功能,更多使用指南可以看官方手册。
谢谢阅读。
文章评论