我在寻找相同功能时遇到了这个问题。
@Jonathan Ong 在上面的评论中提到,不推荐使用数组作为路径,但它在 Express 4 中明确描述,并且在 Express 3.x 中有效。这是一个可以尝试的示例:
app.get(
['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
function ( request, response ) {
}
);
从里面request
对象,路径为/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:
"route": {
"keys": [
{
"optional": false,
"name": "farcus"
}
],
"callbacks": [
null
],
"params": [
null,
null,
"lul"
],
"regexp": {},
"path": [
"/test",
"/alternative",
"/barcus*",
"/farcus/:farcus/",
"/hoop(|la|lapoo|lul)/poo"
],
"method": "get"
},
请注意 params 发生的情况:它知道所有可能路径中的捕获组和参数,无论它们是否在当前请求中使用。
因此,通过数组堆叠多个路径可以轻松完成,但如果您希望从参数或捕获组使用的路径中获取任何有用的内容,则副作用可能是不可预测的。它可能对于冗余/别名更有用,在这种情况下它会工作得很好。
编辑:另请参阅@c24w的回答below https://stackoverflow.com/questions/15350025/express-js-single-routing-handler-for-multiple-routes-in-a-single-line/26058349#37596851.
编辑2:这是一个比较流行的答案。请记住,ExpressJS 与大多数 Node.js 库一样,是一场流动的盛宴。虽然上面的路由仍然有效(我现在正在使用它,这是一个非常方便的功能),但我不能保证请求对象的输出(它肯定与我所描述的不同)。请仔细测试以确保获得所需的结果。