[英]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.