我可以使用具有相同路径和不同参数名称的多个get请求吗



我想知道是否可以有多个具有相同路径但具有不同参数名称的get请求?

他们会互相凌驾吗?或者我应该以不同的方式组织我的路径?

router.get('/:id', functionA);
router.get('/:username', functionB);
functionA(id) {
// return orders by id;
}
functionB(username) {
// return orders by username
}

尝试同时使用这两种方法会发生冲突:

router.get('/:id', functionA);
router.get('/:username', functionB);

由于请求按照声明的顺序匹配,并且这两个路由都与每个顶级URL匹配,因此该路由的每个传入请求都将与第一个请求匹配,并且它将处理所有请求。只有在functionA内部使用某种算法来确定哪些实际请求属于它,然后对不属于functionA的请求调用next(),才会调用functionB

而且,即使你找到了使用上述逻辑实现这一点的方法,这也不是一个好的设计方法。您应该从URL的结构中明确给定URL的目的地是哪个请求处理程序。

我不知道你的应用程序的整个结构或你的整体URL设计,但像这样的东西在这个路由器级别会更清晰,没有冲突:

router.get('/id/:id', functionA);
router.get('/user/:username', functionB);

最新更新