我已经阅读了关于人们路线不匹配的其他问题,然后订购解决问题的路线。我遇到了这个问题,我的 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/