Ubuntu下Postman的响应数据如何解析
导读:Ubuntu下Postman响应数据解析与提取 在 Ubuntu 中,Postman 的响应解析与提取依赖 Tests 与 Pre-request Script 中的 JavaScript 脚本。常用入口包括:解析 JSON 响应体、从 H...
Ubuntu下Postman响应数据解析与提取
在 Ubuntu 中,Postman 的响应解析与提取依赖 Tests 与 Pre-request Script 中的 JavaScript 脚本。常用入口包括:解析 JSON 响应体、从 Headers/Cookies 取值、正则提取文本或 HTML、将值保存为变量供后续请求使用,以及批量运行与持续集成。Postman 的测试脚本本质为 JavaScript,通过 pm 对象完成断言与数据存取。
JSON解析与数据提取
- 基本解析与断言:将响应体解析为对象后,可直接读取字段并进行断言与提取。
上述方式适用于大多数 REST API 的 JSON 响应解析、字段提取与变量保存。// 解析JSON const json = pm.response.json(); // 示例:断言与提取 pm.test("状态码为200", () => pm.response.to.have.status(200)); pm.test("业务码正确", () => pm.expect(json.code).to.eql(0)); // 提取值到变量(后续请求可用 { { token} } ) pm.globals.set("token", json.data.token); pm.environment.set("userId", json.data.user.id);
非JSON响应处理
- 纯文本与二进制文本:直接获取文本,必要时再做处理或正则提取。
const text = pm.response.text(); pm.globals.set("rawText", text); // 简单示例:正则提取 const m = text.match(/token=([A-Za-z0-9\-_]+)/); if (m) pm.globals.set("tokenFromText", m[1]); - XML 响应:使用浏览器内置 DOMParser 解析并取值。
const xmlStr = pm.response.text(); const doc = new DOMParser().parseFromString(xmlStr, "text/xml"); const province = doc.getElementsByTagName("province")[0]?.textContent; if (province) pm.globals.set("province", province); - HTML 页面:可用 正则表达式 抽取隐藏字段或令牌(如 CSRF)。
const html = pm.response.text(); const csrf = (html.match(/name="csrf-token" content="([^"]+)"/) || [])[1]; if (csrf) pm.globals.set("csrfToken", csrf);
以上方法覆盖 text/xml/html 等常见非 JSON 场景的解析与提取。
从Headers Cookies与请求体取值
- 响应头与 Cookies:
// 响应头 const ct = pm.response.headers.get("Content-Type"); pm.globals.set("contentType", ct); // 响应Cookie(Postman v7+ 推荐) const sess = pm.cookies.get("sessionid"); if (sess) pm.globals.set("sessionid", sess); - 请求头、方法与请求体(在 Pre-request 或 Tests 中均可读取):
// 请求方法、协议、端口 const method = pm.request.method; const protocol = pm.request.url.protocol; // http/https const port = pm.request.url.port; // 请求体(raw JSON 场景) const bodyRaw = pm.request.body.raw; if (bodyRaw) { const bodyObj = JSON.parse(bodyRaw); const outTradeNo = bodyObj.out_trade_no; pm.globals.set("outTradeNo", outTradeNo); }
以上示例展示了如何通过 pm.request 与 pm.cookies 读取请求与响应的关键信息。
数组遍历与条件存储及自动化
- 遍历数组并按条件保存(注意避免覆盖与越界):
const json = pm.response.json(); const users = json?.data?.users; if (Array.isArray(users)) { for (const u of users) { if (u.isRetail === true) { // 多个匹配会覆盖;如需保留多个,改为数组或不同变量名 pm.globals.set("UserId", u.id); } else if (u.isRetail === false) { pm.globals.set("orgUserId", u.id); } } } else { console.warn("users 不是数组或不存在"); } - 批量运行与持续集成:将请求保存为 Collection,使用 Collection Runner 批量执行,或用 Newman 在命令行/CI 中运行并生成报告,便于回归与自动化。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu下Postman的响应数据如何解析
本文地址: https://pptw.com/jishu/766182.html
