温馨提示×

CentOS里Postman如何处理响应数据

小樊
40
2025-12-23 06:37:46
栏目: 智能运维

在 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}}。
  • 从 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]);。
  • 遍历数组并按条件保存 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); }); }
  • 响应时间阈值校验
    • 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 中用 {{变量名}} 引用。

0