Restify
遇到不正确的路线并造成歧义。
我有2条路线:
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
.
我切换了路线(将较低的路线移至上行(:
apiRouter.get({ path: '/goals/mute', version: '1.0.0' }, lists.getGoalMute);
apiRouter.get({ path: '/goals/:id', version: '1.0.0' }, goals.getGoal);
现在请求进入正确的路由/goals/mute
。
我不明白这种行为,restify
使用的匹配标准是什么?
您的路线相似。所以现在一切都取决于路线的顺序。
/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/:id
匹配/goals/mute
,如果在后者之前定义前者,它将在更具体的路由之前匹配/goals/mute
。