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
。
我切换了路线(将较低的路线移到了):
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
使用的匹配条件是什么?
答案 0 :(得分:3)
你的路线很相似。所以现在一切都取决于路线的顺序。
/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
。
答案 1 :(得分:0)
路线按其创建顺序进行匹配。
由于/goals/:id
与/goals/mute
匹配,如果您在前者之前定义前者,则会在/goals/mute
的更具体路线之前匹配。