Javascript 路由匹配中的模糊性
正在走错误的路线并造成歧义 我有两条路线:Javascript 路由匹配中的模糊性,javascript,node.js,rest,restify,Javascript,Node.js,Rest,Restify,正在走错误的路线并造成歧义 我有两条路线: apiRouter.get({ path: '/goals/:id', version: '1.0.0' }, goals.getGoal); apiRouter.get({ path: '/goals/mute', version: '1.0.0' }, lists.getGoalMute); 当我在/goals/mute上请求时,它会进入/goals/:id 我切换了路线(将较低的路线向上移动): 现在请求进入正确的路径/goals/mute /
apiRouter.get({ path: '/goals/:id', version: '1.0.0' }, goals.getGoal);
apiRouter.get({ path: '/goals/mute', version: '1.0.0' }, lists.getGoalMute);
当我在/goals/mute
上请求时,它会进入/goals/:id
我切换了路线(将较低的路线向上移动):
现在请求进入正确的路径/goals/mute
/goals/:id /goals/something //here "something" will be "id"
/goals/mute /goals/something //here "something" will be "mute"
我不理解这种行为,什么是匹配标准
restify
使用的?路由按创建顺序匹配
由于
/goals/:id
匹配/goals/mute
,如果在后者之前定义前者,它将在更具体的路由之前匹配/goals/mute您的路由是相似的。所以现在一切都取决于路线的顺序
/goals/:id /goals/something //here "something" will be "id"
/goals/mute /goals/something //here "something" will be "mute"
/goals/:id
与/goals/mute
完全相同
/goals/:id /goals/something //here "something" will be "id"
/goals/mute /goals/something //here "something" will be "mute"
您必须更改路线的顺序:
/goals/mute
/goals/:id
现在它将首先与/goals/mute
匹配,然后与/goals/:id
匹配
因此,如果你点击/goals/
,它将转到/goals/:id
,那么我该怎么做才能让它走上正确的路线呢?将更具体的路线(/goals/mute
)放在不太具体的路线(/goals/:id
)之前。