Aro*_*ano 94 regex routing node.js express
有没有办法在单个函数调用上进行此操作?
var todo = function (req, res){};
app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);
Run Code Online (Sandbox Code Playgroud)
就像是:
app.get("/", "/blabla", "/blablablabla", todo );
Run Code Online (Sandbox Code Playgroud)
我知道这是一个语法混乱,但只是想知道我想要实现什么,一系列的路线将是真棒!
有人知道怎么做吗?
Kev*_*eur 101
我在寻找相同的功能时遇到了这个问题.
@Jonathan Ong在上面的评论中提到,不推荐使用路径数组,但它在Express 4中有明确描述,它适用于Express 3.x. 这是一个尝试的例子:
app.get(
['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
function ( request, response ) {
}
);
Run Code Online (Sandbox Code Playgroud)
从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"
},
Run Code Online (Sandbox Code Playgroud)
注意params会发生什么:它知道所有可能路径中的捕获组和params,无论它们是否在当前请求中使用.
因此,可以轻松地通过阵列堆叠多个路径,但如果您希望从通过params或捕获组使用的路径中获取有用的任何内容,那么副作用可能是不可预测的.它可能对冗余/混叠更有用,在这种情况下它可以很好地工作.
编辑:请参阅下面的 @ c24w的答案.
编辑2:这是一个中等受欢迎的答案.请记住,与大多数Node.js库一样,ExpressJS是一个可移动的盛宴.虽然上面的路由仍然有用(我现在正在使用它,这是一个非常方便的功能),但我无法保证请求对象的输出(它肯定与我所描述的不同).请仔细测试,以确保您获得所需的结果.
Jon*_*Ong 54
app.get('/:var(bla|blabla)?', todo)
Run Code Online (Sandbox Code Playgroud)
:var
设置req.param
你不使用的.它只在这种情况下用于设置正则表达式.
(bla|blabla)
将正则表达式设置为匹配,因此它匹配字符串bla
和blablah
.
?
使整个正则表达式可选,因此它也匹配/
.
小智 47
实际上,你可以传入一系列路径,就像你提到的那样,并且效果很好:
var a = ['/', '/blabla', '/blablablabla'];
app.get(a, todo);
Run Code Online (Sandbox Code Playgroud)
c24*_*24w 27
调用中间件函数的路径; 可以是以下任何一种:
- 表示路径的字符串.
- 路径模式.
- 用于匹配路径的正则表达式模式.
- 任何上述组合的阵列.
他们有一些例子,包括:
这将匹配路径开始
/abcd
,/xyza
,/lmn
,和/pqr
:Run Code Online (Sandbox Code Playgroud)app.use(['/abcd', '/xyza', /\/lmn|\/pqr/], function (req, res, next) { next(); });
我去了:
['path', 'altPath'].forEach(function(path) {
app.get(path, function(req, res) { etc. });
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
63125 次 |
最近记录: |