[英]Why is Express.js routing not selecting correct route?
所以我有以下路线:
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
函数。
如果我将其注释掉或将其移至另一条路线下方,则它将按预期工作。
为什么是这样?
在Express中,路由定义的顺序很重要。 它将执行第一个匹配路线。 如Blex所述, '/:id'
是通配符值,并且与'/resource'
匹配,而不是跳过并遵循正确的路由定义。
一种解决方案是将定义切换为在'/project/:id'
之前定义'/project/resource'
'/project/:id'
一种解决方案是添加另一个路径层,例如 '/project/res/resource'
而不是'/project/resource'
因为Express不会将此匹配到'/:id'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.