你真的会用postman吗
postman 一个非常牛逼的 api 测试工具。如果仅仅是打个 api,还不如直接 curl 来的简单,所以这里提供一些高级的功能的参考。
多级文件夹
经常需要将 api 进行按功能模块进行分组,这种多级文件夹的形式正好可以满足我的需求,某个功能每个 api 一目了然。
多种请求方法
postman 有多达 15 种请求方法供选择,常用 GET、POST、PUT、DELET更是切换起来异常的方便。
URL 参数拼接
这里说的并不是简单的参数拼接 a=b&
这种,而是比较高级的参数拼接
http://{{host}}/api/topics/:tid/replies/:rid
然后在底下就可以补全 tid
和 rid
就可以了。
Authorization
授权可以通过常规的在请求 Headers
中添加 "Authorization: balabala"
,但是 postman 更为方便的是有个专门的 Authorization 的 Tab,切换到这个 Tab 下面有多种通用的授权模式,譬如 Basic Auth
、Bearer Token
、OAuth 2.0
等,这里postman会自动添加相关信息到头或者 url 中。
Manage Environment
这个功能非常实用,相当于全局定义的常量。譬如线下环境的域名是 dev-api.zoulux.top
,线上环境的域名是 api.zoulux.top
,那么这边新建两个 Environment
,分别配置 host 为上面域名,然后在所有的接口上就可以实用如下方式:
http://{{host}}/api/topics/:tid/replies/:rid
很简单的就可以切换线上线下环境了,不仅可以配置 host ,很多公司线上线下接口的 secret 也不一样,都可以在不同的 Environment
中配置。
Pre-request Script
如果上面定义的是全局常量,那么这里可以说是可以定义局部变量,注意这里说的是「可以」,所以功能肯定远远不止如此,此处的 Script
是一个 JavaScript
脚本。
变量
譬如后端要求前端每次打接口将本地的 timestamp 拼接到接口里面接口里面
ts=new Date().getTime();
pm.environment.set("timestamp", ts);
pm
是 postman
提供的全局变量,可以用于设置局部变量,那么在 Params 的 Tab 下面就可以直接使用 timestamp 变量
timestamp : {{timestamp}}
加密
在对接百家云的时候,他们的接口是需要签名的,接口规则还蛮复杂,这里需要接口按 key 排序,还需要加密,这里是 js 的脚本,排序就用原生的 js 就能完成,但是还需要对 md5 加密,这就为难我胖虎了,不过 postman 早就考虑到加密的情况,所以默认已经引入了一些常用 package,CryptoJS中有丰富加密方法。
Tests
这个模块可以对接口的进行测试,譬如
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
可以查看接口返回的 status 是否是 200 。
api文档
在左侧的工程目录上右键选择 Publish Docs,会弹出一个网页,点过去就可以看到一个很精美的api文档,如果平时注意多注释,文档里面都会显示出来,更加优秀的是这个api文档是实时更新的,有新的api的时候刷新就可以看到了。
more
其实 postman 还有很多优秀的功能,值得我去探究。