首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >快速区分动态段和其他静态段

快速区分动态段和其他静态段
EN

Stack Overflow用户
提问于 2019-04-28 15:43:19
回答 2查看 41关注 0票数 0
代码语言:javascript
运行
复制
const route = Router();
router.get('user/:UserId');
router.post('user/:UserId');
router.put('user/:UserId');

我有用户REST api的上述路线,我想有一个位置api的用户。所以我尝试了下面这样的方法。

代码语言:javascript
运行
复制
router.get('user/getUserByLocation');

问题是,当它发现getUserByLocation为UserId时,它会调用router.get('user/:UserId');

我将router.get('user/getUserByLocation');更改为router.get('getUserByLocation'); it works。

我的问题是,上面的解决方案是最好的方法,还是我需要使用带有查询字符串的router.get('user');来获取getUserByLocation。

EN

回答 2

Stack Overflow用户

发布于 2019-04-28 15:57:03

您必须在router.get('user/:UserId')之前配置getUserByLocation。更改代码的顺序。首先配置router.get('user/getUserByLocation')

在express中,将执行第一个匹配的请求处理程序,因此如果在router.get('user/:UserId')之后配置router.get('user/getUserByLocation')。在此之前将被调用。

代码语言:javascript
运行
复制
const route = Router();

router.get('user/getUserByLocation');

router.get('user/:UserId');
router.post('user/:UserId');
router.put('user/:UserId');
票数 0
EN

Stack Overflow用户

发布于 2019-04-28 16:03:24

您可以使用(\\d+)在路由器中声明:UserId应该是数字(而不是字符串)。这样,user/getUserByLocation应该与您的路由user/:UserId不匹配

代码语言:javascript
运行
复制
const route = Router();

router.get('user/:UserId(\\d+)');
router.post('user/:UserId(\\d+)');
router.put('user/:UserId(\\d+)');

router.get('user/getUserByLocation');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55888103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档