上传文件时如何获取201状态码?React+Node.js+MongoDB场景
解决方案
状态码201表示资源成功创建,Express默认成功响应的状态码为200,不会自动根据操作类型切换状态码,你需要在后端/addItems接口的路由处理逻辑中手动指定返回状态码,修改步骤如下:
- 找到后端项目中
/addItems对应的POST路由代码 - 在响应返回前调用
status(201)方法指定状态码,示例代码如下:
// 原代码(默认返回200) app.post('/addItems', upload.single('uploadImg'), async (req, res) => { // 文件存储、MongoDB写入逻辑... res.json({ success: true, data: saveResult }) }) // 修改后代码(返回201) app.post('/addItems', upload.single('uploadImg'), async (req, res) => { try { // 文件存储、MongoDB写入逻辑... // 写入成功后指定201状态码再返回响应 res.status(201).json({ success: true, data: saveResult }) } catch (err) { // 检测到资源重复时建议返回语义匹配的409状态码,方便前端判断 if (err.code === 11000) { // MongoDB重复键错误码 res.status(409).json({ success: false, message: 'Item already exists' }) } else { res.status(500).json({ success: false, message: '服务器错误' }) } } })
补充说明:
- Multer仅负责处理文件上传的解析逻辑,不会修改接口的响应状态码
- 你前端的判断逻辑可以同步优化,区分接口报错、资源重复、上传成功三种场景,避免误判
内容的提问来源于stack exchange,提问作者Anna Fridman
相关产品推荐
相关产品推荐

