nodejs 在路由中使用通配符以及转交控制权
来源:互联网 发布:自学编程从入门到精通 编辑:程序博客网 时间:2024/05/17 08:35
var express = require('express');
//var app = express.createServer(); //该方法已被删除
var app = express();
app.get('/a*', function(req,res) {
console.log(req.params[0]) //获取参数
res.send('a');
// 匹配 /afoo /a.bar /a/qux 等
});
app.get('/a*/c*d', function(req,res) {
res.send('b');
// 匹配 /b/cd /b/cfood /b//c/d/ 等
// 不匹配 /b/c/d/foo
});
app.get('*', function(req, res) {
res.send('*');
// 匹配 /a /c /b/cd /b/c/d /b/c/d/foo
// 不匹配 /afoo /bfoo/cbard
});
//var app = express.createServer(); //该方法已被删除
var app = express();
app.get('/a*', function(req,res) {
console.log(req.params[0]) //获取参数
res.send('a');
// 匹配 /afoo /a.bar /a/qux 等
});
app.get('/a*/c*d', function(req,res) {
res.send('b');
// 匹配 /b/cd /b/cfood /b//c/d/ 等
// 不匹配 /b/c/d/foo
});
app.get('*', function(req, res) {
res.send('*');
// 匹配 /a /c /b/cd /b/c/d /b/c/d/foo
// 不匹配 /afoo /bfoo/cbard
});
app.listen(9001);
当使用通配符来构建路由时, 两个通配符之间的标记必须匹配, 除非它是可选的。通配符通常用在包含(.)的文件名中。 还需要注意的是, 与许多其他正则表达式语言不同,*表示的不是零个以上字符, 它表示的是一个以上字符。 一个斜杠(/) 在匹配通配符的时候可以认为是一个字符。
另外需要注意的是, 路由是按顺序执行的。 当多个路由同时匹配上提供的 URL 时,只有第一个匹配的路由会执行相关的动作, 也就是说, 如何安排路由的顺序是很重要的。 在前面的例子里, 即便通配符能够匹配所有的URL, 它也只能捕获前面的路由未能匹配的URL。
例如:http://127.0.0.1:9001/a/cdsd 既匹配第一个,也匹配第二个,但是同时app.get的时候,只会执行第一个
有时候, 你会希望同一个 URL 在不同的情景下匹配上多个路由。 我们已经看到了路由定义的顺序会决定哪个路由被选中使用。 但是, 当某些条件不满足的时候, 依然有办法可以把控制权传给下一个路由, 这在许多情况下会很有用。 如下:
app.get('/users/:id', function(req, res, next){
var id = req.params.id;
if (checkPermission(id)) {
// 显示个人页面
} else {
next(); //我们对路由的处理函数增加了一个新的参数,next 参数会通知路由中间件去调用下一个路由
}
});
app.get('/users/:id', function(req, res){
// 显示公共页面
});
阅读全文
0 0
- nodejs 在路由中使用通配符以及转交控制权
- 在字符串比较中使用通配符
- 在NodeJs中使用jQuery?
- 在eclipse中开发nodejs(nodejs插件以及安装方法)
- Nodejs控制权转移 next all
- nodejs中实现路由功能
- nodejs中实现路由功能
- C#下在密集运算中如何获取系统控制权
- [软件使用]在Word中使用通配符查询
- Mybatis 通配符# 以及 $的使用
- 在NodeJs中使用MongoDB中的MapReduce
- 在nodejs中使用ejs模版
- 在nodejs中使用ejs模版
- 在Nodejs中使用JSON WEB Tokens
- Word中使用通配符
- Struts2中使用通配符
- struts2中通配符使用
- 在非MVC项目中使用路由
- 求逆元
- swift 屏幕旋转以及状态栏问题解决方案
- 控制反转与依赖注入
- 网络爬虫qq
- HTML5的音频和视频的巧用
- nodejs 在路由中使用通配符以及转交控制权
- 深入浅出UML类图
- 热销超极本iFunk翼S到底怎么样?
- 区块链技术相关论文、文档
- 一文弄懂神经网络中的反向传播法——BackPropagation
- springmvc之拦截器(对比过滤器)
- Java学习笔记之集合(七):Map集合的方法
- android吐司
- android获取ros数据