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');
。
我的问题是,上述解决方案是最好的方法,还是我需要使用带有查询字符串的router.get('user');
来获取getUserByLocation。
答案 0 :(得分:0)
您必须在getUserByLocation
之前配置router.get('user/:UserId')
。更改代码的顺序。首先配置router.get('user/getUserByLocation')
。
明确地说,将执行第一个匹配请求处理程序,因此如果在router.get('user/getUserByLocation')
之后配置了router.get('user/:UserId')
。那会在那之前被调用。
const route = Router();
router.get('user/getUserByLocation');
router.get('user/:UserId');
router.post('user/:UserId');
router.put('user/:UserId');
答案 1 :(得分:0)
您可以在路由器中使用:UserId
声明(\\d+)
应该是数字(而不是字符串)。这样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');