Postman使用笔记
Postman使用笔记
Postman 脚本
Postman 脚本环境变量操作
//设置当前环境变量
pm.environment.set("key", "value");
//设置全局环境变量
pm.globals.set("key", "value");
//获取当前环境变量
pm.environment.get("key");
//获取全局环境变量
pm.globals.get("key");
//在全局和当前环境变量中获取
pm.variables.get("key");
// 获取全局变量
var appId = postman.getGlobalVariable('app_id');
//清除当前环境变量
pm.environment.unset("key");
//清除全局环境变量
pm.globals.unset("key");
//设置集合变量
pm.collectionVariables.set("key",["value1","value2","value3"])
//获取集合
pm.collectionVariables.get("key");
//清除集合
pm.collectionVariables.unset("key");
//遍历集集合,遍历function(遍历当前值,索引,集合,)
pm.collectionVariables.get("key").forEach(function(a,b,c){
console.log(a);
console.log(b);
console.log(c);
});
Postman 脚本 Header 操作
// 获取header
pm.request.headers.get("key");
// 添加header
pm.request.headers.upsert("account: admin");
pm.request.headers.upsert("token: xxxx");
// 引用变量添加header
pm.request.headers.upsert({key: "Signature", value: sign}); // sign 是变量
pm.request.addHeader("Authorization:" + generateAuthorization());
pm.request.headers.add({
key: 'Cookie',
value: 'xxxxxxxxxxx'
});
Postman 脚本查询参数(QueryString)操作
// 获取全部query string,true:url编码,false:不编码
var querypararm = pm.request.url.getQueryString(false); // 返回示例:foo=1&bar=2&baz=3
// 获取全部query string,返回格式 list[(key, value)]
var queryList = pm.request.url.query.all();
// 获取指定key的query string
var value = pm.request.url.query.get("key_name");
// 删除请求参数,参数(请求的键值)
pm.request.url.query.remove("key_name");
// 添加请求参数
pm.request.url.query.add("key1=value1","key2=value2");
// 判断某个键值是否存在,返回:boolean
var has = pm.request.url.query.has("key");
Postman 脚本读取及修改请求 body
console.log(`原始请求body: ${pm.request.body.raw}`); // 获取原始请求body json字符串
var requestBody = JSON.parse(pm.request.body.raw); // 解析为json
var name = requestBody.name; // 获取 body json 的 name 字段
requestBody.name = "new name"; // 修改 name 字段
pm.request.body.raw = JSON.stringify(requestBody); // 更新请求body
// 读取 form-data
pm.request.body.formData.each((item, index) => {
console.log('Key:', item.key);
console.log('Value:', item.value);
});
pm.request.body.toString() 无法读取 form-data
pm.request.body.toString() 可读取 x-www-form-urlencoded 或 raw 数据(例如常用的 application/json 格式)
pm.request.body.toString() 无法正确获取 form-data body。因为 form-data 是以 multipart 形式发送的,它包含了一些特殊的分隔符和 header 信息,这些信息在直接转换为字符串时会丢失,导致无法正确解析。
所以,如果 postman 签名计算脚本中使用 pm.request.body.toString()
读取 body 来计算签名,其实是不对 form-data body 进行签名的。
CryptoJS
CryptoJS 是 postman 脚本环境中预置的一个进行常规加解密计算的 js 库。
CryptoJS 计算 Base64 编码
var base64 = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(“待计算base64的字符串”))
或者
CryptoJS.enc.Utf8.parse(“待计算base64的字符串”).toString(CryptoJS.enc.Base64)
CryptoJS 十六进制转 Base64
var hexStr = “8a2a70382f130cabc7f8bb22fa25941c9ce42e2e48d288fa98c1555439ff73f4”;
CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(hexStr))
postman中使用CryptoJS加解密
https://blog.csdn.net/u011864826/article/details/108011314
使用moment.js格式化时间
Pre-request Script中:
var moment = require('moment')
pm.globals.set("format-datetime", moment().format("MM/DD/YYYY"))
然后引用 {{format-datetime}}
变量即可
How do I format as MM/DD/YYYY in Postman?
https://stackoverflow.com/questions/47355150/how-do-i-format-timestamp-as-mm-dd-yyyy-in-postman
Hold on, wait a moment…
https://dannydainton.com/2018/05/21/hold-on-wait-a-moment/
在Collection或Folder上添加Pre-request scripts
右键 Edit 编辑 Collection 或 Folder,可以看到编辑界面也有类似单个请求的 Pre-request scripts 文本框,把脚本贴到这里,则会对 Collection 或 folder 中的所有请求都起作用。
Pre-request scripts
https://www.getpostman.com/docs/v6/postman/scripts/pre_request_scripts
动态变量 Dynamic variables
: Adds a v4 style guid : Adds the current timestamp : Adds a random integer between 0 and 1000https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables#dynamic-variables
request中访问变量
在 postman 界面中,可以直接使用 {{variableName}}
来访问变量,会被自动替换为变量值。
Postman中查看请求代码
如果想查看curl纯文本代码格式的请求,可以点击右侧的code按钮,弹出窗口中提供各种语言版本的请求发送代码,非常丰富,如下图:
Postman提供丰富的请求发送代码
Postman中调用返回文件的接口
在postman中测试返回pdf或Excel等文件的接口时,以默认文本格式显示的话就全是乱码。
可以将蓝色的发送请求按钮Send选为Send and Download,则有文件response到来时会打开一个保存文件对话框。
命令行curl调用返回文件的接口
或者不用postman,直接在命令行中使用curl来发送请求,并把响应重定向到一个.pdf文件
curl -X GET \
'http://localhost:8007/service/v1/pdf/downloads?signature=8e5da6626a555e94ee5dcda' \
-H 'Authorization: Bearer 2.0deyIQ5nozH/Gm+pKgCKaGlVt0CxFmcEw=' \
-H 'Cache-Control: no-cache' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Postman-Token: 4e1a3c3b-c0ec-4429-919a-0857cbc6134c' \
-d 'id=121&name=hahaha&date=20180703' > download.pdf
curl代码可以直接在code中找到,不用自己拼。
postman flow
https://github.com/postmanlabs/postman-flows/blob/main/tutorials/chaining-requests.md
mac上打开postman看不见窗口
解决方法:
1、Entering full screen(from menu bar or shortcut)
2、Creating a new window. 此时退出全屏就能看到新窗口。
3、全屏关掉老窗口,使用新窗口
上一篇 iTerm2使用笔记
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: