簡體   English   中英

為什么Express.js路由未選擇正確的路由?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM