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
这类格式的请求体存在formdata或urlencoded数组里,得遍历找对应字段:
- 针对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




