Postman调用POST /save接口返回Invalid request错误,求排查
排查POST /save接口返回“Invalid request”错误的思路
根据后端的校验逻辑(req.user、req.user.email、req.body、req.body.city任一不存在则报错),按以下步骤逐一排查:
校验
req.user是否存在
该字段通常由身份认证中间件生成,比如JWT、Session机制。检查Postman是否正确携带认证信息:- 若用JWT,确认Headers里的
Authorization字段是Bearer <你的token>格式,且token未过期、签名有效; - 若用Session,确认Postman的Cookies里包含后端设置的会话Cookie;
- 可在后端接口开头加日志,打印
req.user的值,确认是否为undefined或空对象。
- 若用JWT,确认Headers里的
校验
req.user.email是否存在
即使req.user存在,也要确保用户对象包含email字段:- 查看后端认证逻辑返回的用户数据结构,确认是否遗漏
email字段; - 打印
req.user完整内容,检查email是否为null、undefined或空字符串。
- 查看后端认证逻辑返回的用户数据结构,确认是否遗漏
校验
req.body是否正常接收
后端需正确解析请求体,否则req.body会为空:- Postman中选对请求体格式:若后端接收JSON,就选
Body->raw->JSON,并确保Content-Type请求头为application/json;若接收表单数据,选form-data或x-www-form-urlencoded,对应修改Content-Type; - 确认后端已配置请求体解析中间件(比如Express的
express.json()或express.urlencoded()),且中间件挂载在路由之前; - 打印
req.body的值,确认是否为空或解析错误。
- Postman中选对请求体格式:若后端接收JSON,就选
校验
req.body.city是否存在
无论请求体是否包含email,city字段必须存在且非空:- 检查Postman的请求体内容,确保
city字段存在,比如JSON格式应为{"city": "Shanghai"}(注意用英文引号,无语法错误); - 打印
req.body.city的值,确认是否为null、undefined或空字符串。
- 检查Postman的请求体内容,确保
额外排查点
- 检查后端路由的请求方法是否为
POST,避免因请求方法不匹配触发错误; - 若涉及跨域,确认后端CORS配置允许携带认证凭证(比如
credentials: true),否则认证信息可能无法传递到后端。
内容的提问来源于stack exchange,提问作者user20785876
相关产品推荐
相关产品推荐

