我有这样的路线:/products/123/versions/456
。
我希望子资源是可选的,所以我想要一个路径路径来处理/products/123
和/products/123/versions/456
。
这不起作用:/products/:pid/versions?/:vid?
。
如何将/versions/
部分设为可选,而不将其作为:
的参数...?
答案 0 :(得分:0)
您可以创建一个命名处理程序并将其用于两个路径:
as! AdultHuman
或者你可以使用正则表达式和可选部分进行战斗。但这些实际上是两条不同的路线,而不是一条路线,而且只是想要为它们使用相同的处理程序,因此使用两个function yourhandler(req, res) {
// ...
}
app.get('/products/:pid', yourHandler);
app.get('/products/:pid/versions/:vid', yourHandler);
(或任何HTTP方法)路由定义是最清晰的方法。解决它。
如果您还需要,也可以添加它:
app.get()
答案 1 :(得分:0)
app.get('/products/*', (req, res, next){
const path = req.path;
//now use any logic on path as string
if(path.includes('versions')){
console.log('run version handler');
}else{
console.log('run else handler')}
}
//or const [product, version] = /\/products\/(.*)\/versions\/(.*)/.exec(path)
}