Express MVC项目POST请求/api/device返回404、req.body空、req.files未定义
问题原因
你遇到的req.body为空、req.files为undefined的问题,根源是请求格式和Express解析中间件不匹配:
express.json()中间件仅支持解析Content-Type: application/json格式的请求体,这类格式无法传输文件资源。而你调用的创建设备接口需要同时传文本参数和图片文件,必须用multipart/form-data格式发起请求,默认的json解析中间件无法处理这类请求。
解决步骤
- 调整Postman请求配置
打开POST请求的「Body」标签页,选择格式为form-data,不要使用raw、x-www-form-urlencoded格式 - 填写表单字段
- 文本类字段:按参数名依次填写
name、price、brandId、typeId、info的对应值 - 图片字段:点击
img字段的类型下拉框,把默认的「Text」改成「File」,然后选择本地要上传的图片
- 可选:补充urlencoded解析中间件
如果后续有需要处理普通表单提交的场景,可以在index.js中app.use(express.json())后面添加一行代码,支持解析表单格式的请求体:
app.use(express.urlencoded({ extended: true }))
额外注意
你代码里有个拼写小坑:index.js中引入错误处理中间件的路径写的是./milddleware/ErrorHandlingMiddleware,多了一个字母d,正确拼写应为middleware,后续用到该中间件时需要修正。
内容的提问来源于stack exchange,提问作者freshITmeat
相关产品推荐
相关产品推荐

