Postman pre-request script & tests

本质上是一样的东西,只是一个是在 request 前执行、一个是在收到 response 後执行,分别举两个实际运用例子。

用 javascript 写

Pre-request

用於制作 signature,在串接 webhook 时,对方可能有提供 signature 给我们做验证,而大部分时候会是把 request body 或部分 request body,用一个专属於我们的 key 做加密成为一个 signature,所以每次发送内容不同,signature 就不同。但每次要另外在其他地方做完 signature 再回填 postman 太累了,这时候就可以利用 pre-request script!在每次送 request 前,执行脚本产生 signature~

  • Example of signing:
// 假设 signature 规则为 signature = HmacSHA256(request_body, secret)

// 读取环境变数 secret
var secret = pm.environment.get("secret");

// 读取环境变数 request body
var body = request.data;

// 制作 sugnature
var signature = CryptoJS.HmacSHA256(body, secret).toString();

// 回写环境变数 signature
pm.environment.set("signature", signature);

Tests

故名思义,可以用来验证收到的 response 是否符合预期,但除此之外,我自己满常用的是把 response 的内容再存成环境变数。例如在串接购物 API 时,可能会有一支下订的 API 和一支查订单状态的 API;前者下定成功後会回传订单编号,而後者需要带入订单编号查询。

试想,如果每次要查刚刚下订的单都要去匡选复制编号再贴到查订单的 API 是不是很累?这时侯设定环境变数order_id,然後在每次下订成功後都自动更新order_id就不用一直去复制贴上了~

假设下定成功回传的讯息是这样,我们想把 order_id 存起来

{
    "code": 200,
    "message": "success",
    "result": {
        "order_id": "0000-0000-0000-00000000",
        "price": 200.00,
        "currency": "USD",
        "timestamp": "2021-09-09"
    }
}
  • Set env variable:
var resp = pm.response.json();

if (resp.code !== 200) {
    console.error("API 执行失败");
    return;
}

pm.environment.set("order_id", resp.result.order_id);

<<:  IT铁人DAY 7-Class Diagram类别图

>>:  如何让 Laravel Eloquent 支援 composite key

除此之外,还有什麽吗?

这一天原本想贴一贴学员心得,所以完全没有准备什麽内容。 学员毕业心得,没有强制要每个离开的学员写。...

Day 3 - 系统面临哪些威胁?

出於书本 Chapter 1. Introduction to Ethical Hacking 非技...

[Java Day28] 6.5. instanceof

教材网址 https://coding104.blogspot.com/2021/06/java-i...

DAY 12:Concurrency Patterns 融会贯通+Graceful Shutdown,正确关闭各个宇宙的次元门

前 11 天已经将常见的 concurrency patterns 介绍完毕,今天我们要介绍的不是 ...

【Day 14】- 今天来实作一个键盘监听器

Agenda 资安宣言 测试环境与工具 技术原理与程序码 References 下期预告 资安宣言 ...