You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问Postman批量请求响应中的JSON部分?

处理Postman中$batch请求的响应并提取JSON数据

核心思路

$batch请求的响应是multipart/mixed格式,由多个独立响应片段通过边界符(boundary)分隔。我们需要先拆分这些片段,再定位到包含JSON的部分解析数据。

具体实现步骤

  • 提取边界符:从Content-Type响应头中获取分隔各片段的boundary值。
  • 拆分响应文本:用boundary将原始响应分割为独立的响应块。
  • 筛选解析JSON:遍历响应块,找到Content-Type为application/json的片段,提取并解析JSON内容,最后设置变量。

示例代码(Postman Tests标签页)

// 1. 从响应头获取boundary
const contentType = pm.response.headers.get('Content-Type');
let boundary = contentType.split('boundary=')[1];
// 处理boundary带引号的情况
if (boundary.startsWith('"') && boundary.endsWith('"')) {
  boundary = boundary.slice(1, -1);
}

// 2. 拆分响应为多个部分
const responseChunks = pm.response.text().split(`--${boundary}`);

// 3. 遍历提取JSON数据
responseChunks.forEach(chunk => {
  // 跳过空片段和结束标记
  if (!chunk.trim() || chunk.includes('--')) return;
  
  // 定位JSON类型的响应片段
  if (chunk.includes('Content-Type: application/json')) {
    // 找到JSON内容的起止位置
    const jsonStartIndex = chunk.indexOf('{');
    const jsonEndIndex = chunk.lastIndexOf('}') + 1;
    
    if (jsonStartIndex !== -1 && jsonEndIndex !== -1) {
      const jsonString = chunk.substring(jsonStartIndex, jsonEndIndex);
      try {
        const jsonData = JSON.parse(jsonString);
        
        // 示例:提取id字段并设置为环境变量
        if (jsonData.id) {
          pm.environment.set('batchResponseId', jsonData.id);
        }
        
        // 按需提取其他字段
        // pm.environment.set('targetField', jsonData.targetField);
      } catch (e) {
        console.error('JSON解析失败:', e);
      }
    }
  }
});

注意事项

  • 若$batch包含多个JSON响应,可通过片段中的请求路径、自定义头等标识精准定位目标数据,避免提取错误。
  • 若响应是JSON数组,只需将jsonStartIndex改为chunk.indexOf('['),jsonEndIndex改为chunk.lastIndexOf(']') + 1。
  • 脚本加入异常捕获,避免JSON格式错误影响后续请求。

内容的提问来源于stack exchange,提问作者Barry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:57:08