温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

express URL参数化路由怎么解决

发布时间:2022-01-04 09:22:49 来源:亿速云 阅读:111 作者:iii 栏目:大数据

本篇内容介绍了“express URL参数化路由怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 背景

在最近的开发过程中发现有同事将express路由位置放得不合适, 导致我们自己的中间件在验证URL Parameter 的时候报错了, 经过插卡资料分享一个解决参数化路由的小技巧.

2. 不合适的路由定义

r.route('PUT', '/bind')
r.route('PUT', '/unbind')
r.route('PUT', '/:deviceId')

上面的路由中, express 的中间件 request 对象会认为 bindunbind 也是 参数 deviceId 的值, 我们有一个中间件刚好限制所有的 URL Parameter 必须是 number 类型, 这样导致在请求 /bind 和 /unbind 的时候都会报告deviceId类型错误, 需要说明的是这个错误是在调用了正确路由之后, 不影响使用, 但是后端会抛出异常也是一件不可接受的事情, 所有需要想办法解决. 因为获取 Parameter 是通过 express 标准接口获的, 所以在中间层做兼容行的类型检查不合适, 应该想办法让 express 知道我们的 bindunbind 不是变量.

3. 解决方案

设置更准确的路由规则, 让 express 更准确的发现 URL 参数, 所以可以第三个路由定义修改如下:

r.route('PUT', '/:deviceId(\\d+)')

增加了(\\+d)后, 路由匹配即帮助过滤了 bindunbind 这样的值, 标准接口也不会返回非法的他们, 中间件也就不需要修改了.

“express URL参数化路由怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI