表示区分动态段和其他静态段


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');

最新更新