温馨提示×

Linux中Postman如何处理响应

小樊
55
2025-09-26 22:35:19
栏目: 智能运维

Linux环境下Postman处理响应的完整流程

1. 发送请求并查看基础响应

在Postman中创建或选择请求(GET/POST等),配置URL、Headers(如Content-Type: application/json)、Body(如JSON参数)后,点击Send按钮。响应结果会在下方Response面板显示,包含三部分核心内容:

  • 状态码(如200表示成功,404表示未找到);
  • 响应头(如Content-Type: application/jsonAuthorization: Bearer xxx);
  • 响应体(如JSON格式的返回数据{"id":1,"name":"John"})。
    可通过点击状态码展开详细响应信息(如响应时间、Headers完整内容)。

2. 解析响应数据(JSON/Text/HTML)

JSON响应(最常见)

使用pm.response.json()方法将响应体解析为JavaScript对象,通过**点(.)下标([])**获取嵌套字段:

// 示例响应:{"data":{"user_id":101,"roles":{"points":["admin","editor"]}}}
var jsonData = pm.response.json();
var userId = jsonData.data.user_id; // 获取嵌套字段(点表示法)
var rolePoints = jsonData.data.roles.points[0]; // 获取数组第一个元素(下标表示法)
var lastRoleId = jsonData.data.roles.points.slice(-1)[0]; // 获取数组最后一个元素

Text/HTML响应

  • Text响应:用pm.response.text()获取纯文本内容(如API返回的token字符串);
  • HTML响应:用正则表达式提取所需值(如csrf-token):
// 示例HTML响应:<meta name="csrf-token" content="abc123">
var htmlText = pm.response.text();
var csrfToken = htmlText.match(/name="csrf-token" content="(.*?)"/)[1]; // 正则提取

环境变量/集合变量应用

若需跨请求复用响应数据(如登录接口返回的token),可将值保存到环境变量集合变量中:

pm.globals.set("access_token", jsonData.access_token); // 全局变量(所有请求可用)
pm.environment.set("api_url", pm.response.headers.get("X-API-Base-Url")); // 环境变量(当前环境可用)

3. 响应断言(验证是否符合预期)

Tests标签页编写JavaScript断言,常用方法如下:

状态码断言

pm.test("Status code is 200", function() {
    pm.response.to.have.status(200); // 验证状态码为200
});

响应体内容断言

  • 包含特定字符串
pm.test("Body contains 'success'", function() {
    pm.expect(pm.response.text()).to.include("success"); // 验证响应文本包含"success"
});
  • 等于指定字符串
pm.test("Body equals expected string", function() {
    pm.response.to.have.body('{"code":200,"message":"ok"}'); // 验证响应体完全匹配
});
  • JSON字段值断言
pm.test("User ID is 101", function() {
    var jsonData = pm.response.json();
    pm.expect(jsonData.data.user_id).to.eql(101); // 验证user_id等于101
});

响应头断言

pm.test("Content-Type is present", function() {
    pm.response.to.have.header("Content-Type"); // 验证响应头包含"Content-Type"
});

响应时间断言

pm.test("Response time is less than 200ms", function() {
    pm.expect(pm.response.responseTime).to.be.below(200); // 验证响应时间小于200ms
});

4. 高级处理(接口关联/数据导出)

接口关联

通过提取前一个接口的响应数据,作为下一个接口的参数(如用登录接口的token调用用户信息接口):

// 登录接口Tests中保存token
pm.globals.set("access_token", jsonData.access_token);

// 用户信息接口Pre-request Script中获取token
var token = pm.globals.get("access_token");
pm.request.headers.add({key: "Authorization", value: "Bearer " + token});

导出响应数据

  • 单次响应导出:发送请求后,点击Test Results标签页,点击右上角Export Results,选择JSON格式保存到本地;
  • 批量导出:通过Collection Runner运行多个请求后,导出所有响应结果。

注意事项

  • Linux下Postman需通过Snapsudo snap install postman)或下载tar.gz包安装;
  • 脚本调试可通过console.log()输出信息(如console.log(jsonData)),在Console面板查看;
  • 确保响应体为合法JSON格式(否则pm.response.json()会报错),可通过Pretty按钮格式化响应体。

0