You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Postman技术问询:请求区域原始数据访问方法及控制台打印客户端信息出现undefined值的解决

你的Postman问题解答

问题1:如何在Postman请求区域访问原始数据?

这得看你请求体的格式来区分操作:

  • 如果是Raw格式(比如JSON、纯文本这类),代码层面直接用pm.request.body.raw就能拿到原始的字符串内容;界面操作的话,切换到请求的「Body」标签,选择「Raw」选项卡就能直接看到原始数据。
  • 如果是Form-data/X-www-form-urlencoded格式,这类属于键值对结构,没法直接拿到像Raw那样的整串原始数据,但可以通过pm.request.body.formdata(对应Form-data)或者pm.request.body.urlencoded(对应x-www-form-urlencoded)获取所有字段的数组,遍历就能拿到每个字段的键和值;要是想拼成类似原始提交的字符串,自己循环拼接就行。

问题2:解决控制台打印clientName/clientEmail为undefined的问题

看了你的代码,核心问题是req.body.raw原始字符串,不是JSON对象,直接用.去访问属性肯定会得到undefined,而且你代码里还重复写了clientName,应该是要取clientEmail对吧?咱们分情况修正:

情况1:请求体是Raw格式的JSON

先把原始字符串解析成JSON对象,再访问属性:

const res = pm.response.json();
const req = pm.request.toJSON();
// 解析原始请求体为JSON对象
const reqBody = JSON.parse(req.body.raw);
// 正确获取两个字段
let user = [reqBody.clientName, reqBody.clientEmail];
console.log(user);

情况2:请求体是Form-data或X-www-form-urlencoded

这类格式的请求体存在formdataurlencoded数组里,得遍历找对应字段:

  • 针对Form-data:
const req = pm.request.toJSON();
// 找到对应字段的值
const clientName = req.body.formdata.find(item => item.key === 'clientName')?.value;
const clientEmail = req.body.formdata.find(item => item.key === 'clientEmail')?.value;
let user = [clientName, clientEmail];
console.log(user);
  • 针对X-www-form-urlencoded:
const req = pm.request.toJSON();
// 找到对应字段的值
const clientName = req.body.urlencoded.find(item => item.key === 'clientName')?.value;
const clientEmail = req.body.urlencoded.find(item => item.key === 'clientEmail')?.value;
let user = [clientName, clientEmail];
console.log(user);

要是不确定请求体格式,建议先在控制台打印req.body看看结构,这样更准确:

console.log('请求体结构:', req.body);

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

火山引擎 最新活动