Node.js Express DELETE端点无法获取URL参数问题排查
问题排查:Express DELETE端点无法读取URL参数
你遇到的这个问题其实是个容易忽略的小细节——路由回调函数的参数顺序写反了!
先看你写的DELETE路由代码:
app.delete('/api/courses/:id', (res, req) => { console.log(req.params.id); });
在Express的路由回调逻辑里,参数有固定的顺序:第一个参数是请求对象(req),第二个才是响应对象(res)。你这里把res和req的位置搞反了,导致代码里的req实际上是响应对象,而响应对象根本没有params属性,所以才会抛出Cannot read property 'id' of undefined的错误。
而你其他的GET/POST/PUT端点能正常工作,应该是因为那些路由的回调参数顺序是正确的,只有DELETE这里写错了。
修正后的代码
只需要把参数顺序调换过来就行:
app.delete('/api/courses/:id', (req, res) => { console.log(req.params.id); // 现在能正常获取到URL参数id了 // 别忘了添加响应返回,避免请求挂起: res.status(200).send('删除操作已处理'); });
修改之后再用Postman发送DELETE请求到localhost:5000/api/courses/1,就能正常打印出1,也不会再返回错误页面了。
内容的提问来源于stack exchange,提问作者Flimzy_Programmer
相关产品推荐
相关产品推荐

