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

Express中DELETE请求req.body为空 同参数POST传参正常

问题产生原因

问题根源在前端封装的api.js请求逻辑,和Express框架无关:
你在fetch请求配置中写死了请求体赋值规则:

body: method === 'POST' || method === 'PATCH' ? JSON.stringify(input) : null,

这段逻辑只给POST、PATCH两个方法附加序列化后的请求参数,其余所有HTTP方法(包括你调用的DELETE)的请求体都会被直接设为null,参数根本没有发送到后端,自然Express里打印req.body是空对象。

补充说明:HTTP协议本身没有禁止DELETE方法携带请求体,Express内置的express.json()解析中间件默认也支持解析DELETE请求的JSON格式请求体,你之前POST请求能正常拿到参数,只是因为判断逻辑刚好覆盖了POST方法而已。

修复方法

直接调整前端api.js里的请求体判断逻辑,把DELETE方法加入允许携带请求体的方法列表即可,找到原来的body配置行,替换为:

body: ['POST', 'PATCH', 'DELETE'].includes(method) ? JSON.stringify(input) : null,

修改后重新发起DELETE请求,参数就会正常被序列化到请求体中发送,后端即可通过req.body正常读取到传递的字段。
你当前服务端已经配置了express.json()中间件(否则POST请求也无法正常解析body),服务端代码不需要做任何调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:45:51