首页主机资讯Ubuntu下Postman的响应数据如何解析

Ubuntu下Postman的响应数据如何解析

时间2025-12-08 18:32:03发布访客分类主机资讯浏览1071
导读:Ubuntu下Postman响应数据解析与提取 在 Ubuntu 中,Postman 的响应解析与提取依赖 Tests 与 Pre-request Script 中的 JavaScript 脚本。常用入口包括:解析 JSON 响应体、从 H...

Ubuntu下Postman响应数据解析与提取

Ubuntu 中,Postman 的响应解析与提取依赖 TestsPre-request Script 中的 JavaScript 脚本。常用入口包括:解析 JSON 响应体、从 Headers/Cookies 取值、正则提取文本或 HTML、将值保存为变量供后续请求使用,以及批量运行与持续集成。Postman 的测试脚本本质为 JavaScript,通过 pm 对象完成断言与数据存取。

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);
        
    
    上述方式适用于大多数 REST API 的 JSON 响应解析、字段提取与变量保存。

非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.requestpm.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
Ubuntu上Postman的脚本编写技巧有哪些 Postman在Ubuntu中的环境变量如何设置

游客 回复需填写必要信息