如何在express.js中区分路径的路径和参数?

时间:2020-05-22 20:16:10

标签: javascript node.js typescript express

我有一条具有以下路线的快速申请:

// Get category by id
innerRouter.get('/:id', categoriesController.getById)

// Get all categories along with their subcategories
innerRouter.get('/withSubcategories', categoriesController.getAllWithSubcategories)

问题是express似乎无法区分这两者,例如,此请求如下:

http://localhost:3000/api/categories/withSubcategories

Express实际上会调用categoriesController.getById而不是categoriesController.getAllWithSubcategories

我知道我可以创建一条路线,然后检查req.params.id,但是我想相信还有一种更优雅的方法,可以吗?

1 个答案:

答案 0 :(得分:1)

Express对定义路线的顺序很敏感,因此将/withSubcategories移到/:id上方即可解决此问题。但是,您不应该将/:id移至/category/:id之类,因为不建议在根路径中使用完全匹配。