当前位置 : 首页 » 文章分类 :  开发  »  Postman使用笔记

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 1000

https://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使用笔记

下一篇 Google-Guava 使用笔记

阅读
评论
1.4k
阅读预计6分钟
创建日期 2018-07-03
修改日期 2024-10-25
类别

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论