我已经阅读了有关人的路线不匹配的其他问题,然后订购解决问题的路线。我遇到了这样的问题,其中我的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参数是而不是 optinial,这就是为什么
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/

10-09 17:52