为什么Express.js路由select不正确的路由?
所以我有以下路线:
app.delete('/project/:id', crud.deleteProject); app.delete('/project/resource/', crud.removeResourceFromProject);
当我使用URL http://mysite.no/project/resource/
运行ajax调用时:
delete: function(url,data) { return $.ajax({ url: url, type: "DELETE", dataType: 'json', data: data });
Express运行crud.deleteProject
function。
如果我将其注释掉或移动到其他路线下方,则按预期工作。
为什么是这样?
在Express中,路由定义的顺序非常重要。 它将执行第一个匹配的路线。 正如Blex所述, '/:id'
是通配符值,与'/resource'
匹配,而不是跳过和遵循正确的路由定义。
一个解决scheme是将定义切换到'/project/:id'
之前定义的'/project/resource'
'/project/:id'
一个解决scheme是添加另一个path层,例如 '/project/res/resource'
而不是'/project/resource'
因为Express不会匹配'/:id'
。
- 调用之间的req.params更改
- 在ExpressJS中基于文件扩展的中间件执行
- Node.JS,Socket.IO和群集中的WebSocket握手不起作用
- 快递ipfilter的具体路线?
- 如何使用node.js(express.js)重新发送带有上传文件的post multipart / form-data表单到不同的服务器?
- nodejs(express)是否可以有不区分大小写的查询string?
- 如何返回一个variables,同时重置/删除它
- Express.js 4个路由与router.route不匹配
- Node.js + Express.js + Passport.js – 我需要一些build议如何构build它们