node.js - express 路线错配

标签 node.js express

我已经阅读了关于人们路线不匹配的其他问题,然后订购解决问题的路线。我遇到了这个问题,我的 URL 路由被视为参数,然后表示不匹配并导致错误的路由。例如这是两条路线:

app.get('/byASIN/LowPrice/:asin/:price',function(req,res){});

app.get('/byASIN/:asin/:price', function(req, res) {});

现在一切正常,但只要我从第一条 route 取出任何参数,它就会匹配下面给出的路线,这不是我想要的。 如果我点击 /byASIN/LowPrice/:asin/:price 一切正常,但是一旦我点击 /byASIN/LowPrice/:asin 它匹配 byASIN/:asin/:price 并因此调用了错误的函数并使我的服务器崩溃。我想让它们显式匹配,如果 /byASIN/LowPrice/:asin 被调用,响应一些警告,例如你打电话时少了一个论点。我在这里缺少什么?

最佳答案

默认情况下,express Url 参数不是可选的,这就是原因

app.get('/byASIN/LowPrice/:asin/:price',function(req,res){});

不匹配/byASIN/LowPrice/:asin,因为缺少第二个参数。

但是,您可以通过向其添加 ?使参数可选:

app.get('/byASIN/LowPrice/:asin/:price?',function(req,res){});

这应该可以解决您的问题。

关于node.js - express 路线错配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36869523/

相关文章:

node.js - mongodb 中数组与聚合框架的交集

Node.js 模块版本不匹配,随 MacPorts 安装

javascript - 带有 Ref : Document Not Updating With Save 的 Mongo 模式

node.js - 在reactjs中使用axios显示来自mongodb的收集数据

javascript - 有什么方法可以在 Express 的 POST 请求中获取 csrf token 吗?

unit-testing - 测试 Node.js,模拟并测试所需的模块?

node.js - Cloudinary异步等待一次上传多个图像,然后保存到 Node js中的数组

node.js - angularjs - 键入时路线不起作用

node.js - FCM : getting ' Error: data must be a non-null object' error?

javascript - Express js 根据路由需要不同的模块