ExpressJS - URL的可选部分,它不是一个参数?

时间:2017-01-13 10:32:17

标签: javascript node.js express

我有这样的路线:/products/123/versions/456

我希望子资源是可选的,所以我想要一个路径路径来处理/products/123/products/123/versions/456

这不起作用:/products/:pid/versions?/:vid?

如何将/versions/部分设为可选,而不将其作为:的参数...?

2 个答案:

答案 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)
    }