const route = Router();
router.get('user/:UserId');
router.post('user/:UserId');
router.put('user/:UserId');
我有用户REST api的上述路线,我想有一个位置api的用户。所以我尝试了下面这样的方法。
router.get('user/getUserByLocation');
问题是,当它发现getUserByLocation为UserId时,它会调用router.get('user/:UserId');
。
我将router.get('user/getUserByLocation');
更改为router.get('getUserByLocation');
it works。
我的问题是,上面的解决方案是最好的方法,还是我需要使用带有查询字符串的router.get('user');
来获取getUserByLocation。
发布于 2019-04-28 15:57:03
您必须在router.get('user/:UserId')
之前配置getUserByLocation
。更改代码的顺序。首先配置router.get('user/getUserByLocation')
。
在express中,将执行第一个匹配的请求处理程序,因此如果在router.get('user/:UserId')
之后配置router.get('user/getUserByLocation')
。在此之前将被调用。
const route = Router();
router.get('user/getUserByLocation');
router.get('user/:UserId');
router.post('user/:UserId');
router.put('user/:UserId');
发布于 2019-04-28 16:03:24
您可以使用(\\d+)
在路由器中声明:UserId
应该是数字(而不是字符串)。这样,user/getUserByLocation
应该与您的路由user/:UserId
不匹配
const route = Router();
router.get('user/:UserId(\\d+)');
router.post('user/:UserId(\\d+)');
router.put('user/:UserId(\\d+)');
router.get('user/getUserByLocation');
https://stackoverflow.com/questions/55888103
复制相似问题