Postman使用最佳实践
集成了http请求所需的各种设置项,而且还提供了调试工具以及脚本支持。
一. 请求参数设置项
1. 环境变量: 有三种
- 类型:
- global variables 整个postman全局变量
- collection variables 当前集合变量
- envirement variables 环境变量
- 影响力
- envirement > collection > global
- 建议:
- 如果使用envirement变量,命名方面最好有区分,别多个集合用同一套
2. 请求参数
请求参数中可以使用上面所设置的环境变量
- get 参数 (两种格式输入)
- 普通key value输入
- 批量输入
- 鉴权验证
- 可以继承父层,比如目录或者集合
- 支持api key、bearer token、basic auth、OAuth等
- header参数
- 隐藏的公共头
- 普通key value输入
- 批量输入
- body 参数
- 无
- form-data
- x-www-form-urlencoded
- raw 支持text、js、json、html、xml等
- binary 上传二进制文件
- GrapQl 一种用于API的查询语言
3. 脚本
- 请求前脚本
- 可以层层继承,但每层的作用域是相互独立的
- 可以对请求的参数校验加密,或者增删改。包括头部
- 可以设置变量,会更新到设置的参数中
- 响应后test脚本
- 对响应消息做测试使用
- 比如登陆接口,如果是token,可以在这写入环境变量中
- pm系列 与当前执行的脚本相关的信息
- info 对象包含与正在执行的脚本有关的信息
- eventName
- iteration
- iterationCount
- …
-
响应登录结果操作
if(pm.response.code == 200) { var jsonData = pm.response.json(); if(!jsonData['data']['token']) { return ; } pm.collectionVariables.set("token", jsonData['data']['token']); }
-
sendRequest 发送一个异步请求,只能异步。。。
// Example with a full fledged SDK Request const echoPostRequest = { url: 'https://postman-echo.com/post', method: 'POST', header: 'headername1:value1', body: { mode: 'raw', raw: JSON.stringify({ key: 'this is json' }) } }; pm.sendRequest(echoPostRequest, function (err, res) { console.log(err ? err : res.json()); });
-
variables 变量会根据各级变量变化
在写脚本旁边有提示
- environment 环境变量
- collectionVariables 集合变量
- globals 全集变量
- request 当前的请求 重要
- url => URL
- headers => HeaderList
- add 添加头
- remove 删除头
- upsert 插入
- mehtod => String https请求方法
- body => RequestBody
- response 这个对我来说不太重要
- test 等
- 如果不懂其中api有啥,只要知道类型看这===>
- info 对象包含与正在执行的脚本有关的信息
- postman内置模块
- 第三方
- ajv : The fastest JSON Schema validator for Node.js and browser
- atob: Unicode and Binary Support
- btoa: turns binary data to base64-encoded ascii
- chai: assertion library
- cheerio:implements a subset of core jQuery
- crypto-js
- csv-parse/lib/sync
- lodash
- moment:date library for parsing, validating, manipulating, and formatting dates
- postman-collection
- tv4:data validate
- uuid
- xml2js
- node modules
- path
- assert
- buffer
- util
- url
- punycode
- querystring
- string-decoder
- stream
- timers
- events
- 第三方
- 例子
-
设置额外的头部,有时候不想每个请求单独设置的话
pm.request.headers.add({ 'key': "Header-Name", 'value': "Header-Value", })
-
sign hash 或者加密
let crypto = require("crypto-js"); let json = JSON.parse(body['raw']); //序列化JSON BODY delete json['sign'] let jsonStr = JSON.stringify(json) + "abcd" let sign = ''+ crypto.MD5(jsonStr)
-
3. 调试工具
-
view -> show PostMan console
- 快捷键 ctrl+alt+c
- 然后,然后就是个chrome调试工具,其实postman客户端是基于electron开发的桌面工具,electron是基于chrome开源版,所以
console.log(process.versions.electron)
4. 其他
- 可以自己查看官方文档~
5.例子
如果需要可以下载下来,然后导入到自己的postman
6. 最佳实践
-
登录成功后获取token,并写入到配置中
if(pm.response.code == 200) { var jsonData = pm.response.json(); if(!jsonData['data']['token']) { return ; } pm.collectionVariables.set("token", jsonData['data']['token']); }
-
renew token with header
if(pm.response.code == 200) { // 检查头部是否存在当前key值,如果有,则替换 const key = 'Refresh-Token' if(pm.response.headers.has(key)) { console.log('renew access token') pm.collectionVariables.set("token", pm.response.headers.get(key)); } }
-
自定义request
if(pm.response.code == 200) { var jsonData = pm.response.json(); if(!jsonData['data']['token']) { return ; } pm.environment.set("token", jsonData['data']['token']); var requests = { url: pm.environment.get('url')+ "/api/common/auth?token="+ jsonData['data']['token'],//请求url method: 'GET',//请求方式 header: { 'Content-Type':'application/json' },//请求header }; //发送请求,参数:请求信息,响应函数(异常,响应数据) pm.sendRequest(requests,function (err, response) { var result = response.json(); console.log(result); pm.environment.set("auth", result['data']['auth']); }); }