CentOS里Postman如何处理响应数据
导读:在 CentOS 上使用 Postman 处理响应数据的实用指南 一 查看与格式化响应 在 Postman 中发送请求后,于下方 Response 区域查看状态码、响应时间、响应头和响应体。 响应体为 JSON 时会自动格式化,可点击 P...
在 CentOS 上使用 Postman 处理响应数据的实用指南
一 查看与格式化响应
- 在 Postman 中发送请求后,于下方 Response 区域查看状态码、响应时间、响应头和响应体。
- 响应体为 JSON 时会自动格式化,可点击 Pretty 切换为美观排版,便于阅读与定位字段。
- 非 JSON 场景可直接查看原始文本;若为 HTML,可用正则等方式提取关键信息(见下文示例)。
二 在 Tests 脚本中解析与断言
- 基本解析与常见断言
- 解析 JSON:const data = pm.response.json();
- 状态码:pm.test(“Status is 200”, () => pm.response.to.have.status(200));
- 响应时间:pm.test(“Response < 200ms”, () => pm.expect(pm.response.responseTime).to.be.below(200));
- 字符串包含:pm.test(“Body contains keyword”, () => pm.expect(pm.response.text()).to.include(“keyword”));
- 精确字符串相等:pm.test(“Exact match”, () => pm.response.to.have.body(“expected string”));
- 旧式写法(兼容):tests[“Status code is 200”] = responseCode.code === 200; (建议优先使用 pm.test)。
- 结构化响应取值与类型安全
- 推荐先校验结构再取值,避免运行时错误:
- const r = pm.response.json();
- if (r & & r.data & & Array.isArray(r.data.users)) { … }
- 布尔值比较务必使用严格相等:if (user.isRetail === true) { … } ,避免与字符串 “true”/“false” 混淆。
- 推荐先校验结构再取值,避免运行时错误:
- 变量提取与传递
- 环境变量:pm.environment.set(“token”, data.access_token);
- 全局变量:pm.globals.set(“token”, data.access_token);
- 在后续请求中使用 { { token} } 引用。
- 动态请求串联
- 根据前一个接口返回的列表发起后续请求并断言:
- pm.sendRequest(r[0].url, (err, res) => { const u = res.json(); pm.test(‘has email’, () => pm.expect(u.email).to.exist); } );
- 根据前一个接口返回的列表发起后续请求并断言:
- 响应类型适配
- 纯文本:const txt = pm.response.text();
- XML 转 JSON:const obj = xml2Json(responseBody); (便于后续取值与断言)。
三 典型场景示例
- 登录后提取并保存 token
- 请求登录接口,Tests 中:
- const r = pm.response.json();
- pm.environment.set(“access_token”, r.access_token);
- 其他请求在 Headers 中使用:Authorization: Bearer { { access_token} } 。
- 请求登录接口,Tests 中:
- 从 HTML 中提取 csrf-token
- Tests 中:
- const html = pm.response.text();
- const m = html.match(/name=“csrf-token” content=“([^”]+)"/);
- if (m) pm.globals.set(“csrf_token”, m[1]); 。
- Tests 中:
- 遍历数组并按条件保存 ID
- 假设结构为 {
data: {
users: […] }
}
- const r = pm.response.json();
- if (r?.data?.users?.length) { r.data.users.forEach(u => { if (u.isRetail === true) pm.globals.set(“UserId”, u.id); else if (u.isRetail === false) pm.globals.set(“orgUserId”, u.id); } ); }
- 假设结构为 {
data: {
users: […] }
}
- 响应时间阈值校验
- pm.test(“Response time OK”, () => pm.expect(pm.response.responseTime).to.be.below(300));
- 集合批量运行与持续回归
- 使用 Runner 批量运行 Collection,统一查看 Test Results 报告,适合回归与性能基线校验。
四 排错与最佳实践
- 优先使用 pm.test/pm.expect 编写可读、可维护的断言;旧式 tests[] 仅作兼容。
- 访问嵌套字段前务必做结构校验(如 r?.data?.items),避免“Cannot read property … of undefined”。
- 布尔判断用 === true/false,不要用字符串比较;提取文本或 HTML 时注意编码与转义。
- 需要跨请求共享数据时,合理使用 环境变量(按环境隔离)与 全局变量(全局唯一),并在请求参数、Header、Body 中用 { { 变量名} } 引用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS里Postman如何处理响应数据
本文地址: https://pptw.com/jishu/778142.html
