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

React调用Express接口触发express-validator验证错误,Postman无异常

问题解决:express-validator验证错误(前端发送数据结构不匹配)

问题现象

React应用通过Context的addNote方法发送POST请求到后端添加笔记,触发express-validator的验证错误,提示title和description长度需至少5字符。浏览器控制台显示payload内容正确,但用Postman/ThunderClient发送相同内容时无错误。

错误原因

从控制台返回的req.body可以看出,前端发送的数据被额外包裹在note对象中:

{
  "note": {
    "description": "description test",
    "tag": "",
    "title": "Reactjs"
  }
}

而后端的express-validator验证规则是直接读取req.body.title和req.body.description,但实际这两个字段存在于req.body.note层级下,导致验证时无法读取到有效值,触发长度不足的错误。而Postman发送时是将title、description放在请求body的根层级,因此验证通过。

解决方案

修改Context中addNote方法的请求body序列化逻辑,直接传递note对象,不要将其包裹在额外的对象中。

修改后的Context代码

const TestState = (props) => {
    const host = "http://localhost:5000"
    const [notes, setNotes] = useState([])

    //ADD A NOTE
    const addNote = async (note) => {
        console.log({ theNote: note })
        const response = await fetch(`${host}/api/notes/new`, {
            method: "POST",
            headers: {
                "Content-Type": "application/json",
                "Authorization": "--JWTauthToken--"
            },
            body: JSON.stringify(note), // 直接序列化note对象,无需额外包裹
        });
        const jsonData = await response.json();
        console.log(jsonData)
    } 
}

说明

修改后,前端发送的请求body结构将与Postman一致,后端能直接读取到req.body.title和req.body.description,express-validator的验证规则即可正常生效,不会再触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:34:55