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

Node.js+Mongoose实现CRUD时Postman发POST请求返回400错误

问题描述

基于Node.js搭配Mongoose实现简易CRUD功能时,使用Postman发送POST请求始终返回400 Bad Request错误,相关信息如下:

  • Postman请求报错截图:
    向API发送POST请求时显示的报错信息
  • userController.js 注册接口代码:
const registerUser = asyncHandler(async (req, res) => {
    const {name, email, password, phoneNumber} = req.body

    if(!name || !email || !password || !phoneNumber) {
        res.status(400)
        throw new Error('Please add all fields')
    }
    res.json({ message: 'Register user'})
})
  • userModel 代码截图:
    userModel中的代码截图
排查&解决方法

这个400报错是你写的字段非空校验逻辑触发的,说明接口运行时req.body里没有拿全name/email/password/phoneNumber四个字段,按以下顺序排查即可:

  1. 确认已配置请求体解析中间件
    Express 4.16及以上版本必须在注册路由前添加以下两行中间件,否则请求携带的参数不会被解析到req.body对象中,所有字段读取出来都是undefined,直接触发缺字段的400错误:
    // 解析JSON格式请求体
    app.use(express.json())
    // 解析表单格式请求体
    app.use(express.urlencoded({ extended: true }))
    
  2. 检查Postman传参格式
    • 如果用raw模式传参,要确认右侧格式选项选中的是JSON,不要选Text/XML等其他格式,同时检查JSON语法正确,字段名和接口要求的四个字段完全一致,注意大小写不要写错。
    • 如果用form-data或x-www-form-urlencoded模式传参,要确认前面的urlencoded解析中间件已经开启,字段名拼写正确。
  3. 检查路由匹配
    确认注册接口的请求方法是POST,请求路径和Postman里填写的路径完全一致,没有漏写路由前缀、路径拼写错误的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:57:19