我有一条具有以下路线的快速申请:
// 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
,但是我想相信还有一种更优雅的方法,可以吗?
答案 0 :(得分:1)
Express对定义路线的顺序很敏感,因此将/withSubcategories
移到/:id
上方即可解决此问题。但是,您不应该将/:id
移至/category/:id
之类,因为不建议在根路径中使用完全匹配。