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。
您可以使用 (\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');
router.get('user/:UserId')
之前配置getUserByLocation
。更改代码的顺序。首先配置router.get('user/getUserByLocation')
。
在 express 中,将执行第一个匹配的请求处理程序,因此如果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');