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

Can i use multiple get request with same path and different parameter names?

我想知道是否可以有多个具有相同路径但参数名称不同的 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);