Node.js里怎么正确处理RESTful API的PUT请求参数?
我用Express写了个RESTful接口,GET和POST都好好的,但PUT请求拿不到前端传的参数,req.body一直是空对象。
我已经加了app.use(express.json())中间件,POST请求能正常解析JSON,但PUT就是不行,是不是还要额外配置什么?
前端发请求的代码是这样的:
fetch('/api/users/123', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Alice', email: 'alice@example.com' })
})
你检查一下
app.use(express.json())是否放在所有路由定义之前。Express中间件是按顺序执行的,如果路由写在前面,请求就直接命中路由了,根本不会走到json解析中间件。正确的写法应该是这样:
如果顺序没问题,那可能是另一个坑:fetch请求的跨域问题。如果你前端和后端不在同一个端口,记得加cors中间件:
还有一种情况是某些旧版Express对fetch PUT请求处理有问题,可以试试在fetch里明确指定
method: 'PUT',你代码里已经有了,所以应该不是这个问题。你先把中间件顺序调一下,大概率能解决。