expressURL参数化路由怎么解决

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

成都创新互联成立于2013年,是专业互联网技术服务公司,拥有项目成都网站设计、做网站、成都外贸网站建设公司网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元蒸湘做网站,已为上家服务,为蒸湘各地企业和个人服务,联系电话:028-86922220

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参数化路由怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


当前标题:expressURL参数化路由怎么解决
分享路径:http://ybzwz.com/article/jhijpj.html