本篇内容介绍了“express URL参数化路由怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
在最近的开发过程中发现有同事将express路由位置放得不合适, 导致我们自己的中间件在验证URL Parameter 的时候报错了, 经过插卡资料分享一个解决参数化路由的小技巧.
r.route('PUT', '/bind') r.route('PUT', '/unbind') r.route('PUT', '/:deviceId')
上面的路由中, express 的中间件 request 对象会认为 bind
和 unbind
也是 参数 deviceId
的值, 我们有一个中间件刚好限制所有的 URL Parameter 必须是 number 类型, 这样导致在请求 /bind 和 /unbind 的时候都会报告deviceId
类型错误, 需要说明的是这个错误是在调用了正确路由之后, 不影响使用, 但是后端会抛出异常也是一件不可接受的事情, 所有需要想办法解决. 因为获取 Parameter 是通过 express 标准接口获的, 所以在中间层做兼容行的类型检查不合适, 应该想办法让 express 知道我们的 bind
和 unbind
不是变量.
设置更准确的路由规则, 让 express 更准确的发现 URL 参数, 所以可以第三个路由定义修改如下:
r.route('PUT', '/:deviceId(\\d+)')
增加了(\\+d)
后, 路由匹配即帮助过滤了 bind
和 unbind
这样的值, 标准接口也不会返回非法的他们, 中间件也就不需要修改了.
“express URL参数化路由怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。