[转]express 路由控制--next
2016-03-09 15:04
344 查看
next()
express的路由控制有个next()功能,在定义了多个路由的时候,对匹配的url会按顺序执行,
例如,有这样两个路由,第一个路由会对满足“/”的地址,在req中添加一个user的属性,然后再交给接下去的路由处理
所以当访问....../user时,可以从req中取出user信息
[javascript] view plain copy
app.get(/^\/*/,function(req, res, next){
req.user ="shuilan";
next(); // 将控制转向下一个符合URL的路由
});
app.get('/user', function(req, res){
res.send('viewing ' + req.user);
});
用这种方式,可以对满足某一条件的url地址,先做一些处理(比如加载用户信息之类的),然后再转交给更具体的路由处理
路由中间件
与此功能类似的,还有路由中间件的功能,
一个路由中可以添加一个或者多个回调函数,如
[javascript] view plain copy
app.get('/user/:id/edit', loadUser, andRestrictToSelf, function(req, res){
res.send('开始编辑用户 ' + req.user.name);
});
这个路由添加了3个处理函数,会按顺序执行
loadUser可以是形如这样的处理函数
[javascript] view plain copy
function loadUser(req, res, next) {
// 这里提供假数据,你可以从数据库中获取真实用户信息
var user = users[req.params.id];
if (user) {
req.user = user;
next();
} else {
next(new Error('不存在的用户 ' + req.params.id));
}
}
这样就能将多个路由都需要用到的处理提取出来,写成单独的函数,或者用来提前做一些条件判断
其他:
express的use()功能在api中的定义是app.use([path],function),
不指定path的情况下,对应的是默认的'/',
当指定path时,会对匹配的url进行处理,
但是这里的path貌似不能像get、all那样进行正则匹配
参考:
http://www.csser.com/board/4f77e6f996ca600f78000936#/post/4f77ea1cbe3baa0d7800153c
http://expressjs.com/api.html
原文:
http://blog.csdn.net/haidaochen/article/details/8615621
express的路由控制有个next()功能,在定义了多个路由的时候,对匹配的url会按顺序执行,
例如,有这样两个路由,第一个路由会对满足“/”的地址,在req中添加一个user的属性,然后再交给接下去的路由处理
所以当访问....../user时,可以从req中取出user信息
[javascript] view plain copy
app.get(/^\/*/,function(req, res, next){
req.user ="shuilan";
next(); // 将控制转向下一个符合URL的路由
});
app.get('/user', function(req, res){
res.send('viewing ' + req.user);
});
用这种方式,可以对满足某一条件的url地址,先做一些处理(比如加载用户信息之类的),然后再转交给更具体的路由处理
路由中间件
与此功能类似的,还有路由中间件的功能,
一个路由中可以添加一个或者多个回调函数,如
[javascript] view plain copy
app.get('/user/:id/edit', loadUser, andRestrictToSelf, function(req, res){
res.send('开始编辑用户 ' + req.user.name);
});
这个路由添加了3个处理函数,会按顺序执行
loadUser可以是形如这样的处理函数
[javascript] view plain copy
function loadUser(req, res, next) {
// 这里提供假数据,你可以从数据库中获取真实用户信息
var user = users[req.params.id];
if (user) {
req.user = user;
next();
} else {
next(new Error('不存在的用户 ' + req.params.id));
}
}
这样就能将多个路由都需要用到的处理提取出来,写成单独的函数,或者用来提前做一些条件判断
其他:
express的use()功能在api中的定义是app.use([path],function),
不指定path的情况下,对应的是默认的'/',
当指定path时,会对匹配的url进行处理,
但是这里的path貌似不能像get、all那样进行正则匹配
参考:
http://www.csser.com/board/4f77e6f996ca600f78000936#/post/4f77ea1cbe3baa0d7800153c
http://expressjs.com/api.html
原文:
http://blog.csdn.net/haidaochen/article/details/8615621
相关文章推荐
- MongoDB configuration
- iOS Socket深入剖析
- php的学习笔记之面向对象(二)
- IOS 30多个iOS常用动画,带详细注释
- storm 文档(2)----基本原理
- Android上替代SQLite的选择:Realm
- 通过C++程序示例理解设计模式中的外观模式
- 岗位-<iOS开发工程师>-总结
- 2. Add Two Numbers
- storm 文档(1)----文档主页
- Samtools说明文档网址变更
- Learn Some Framework-5 ActivityManagerService[Initialize]
- Leetcode ☞ 143. Reorder List
- Object-c block块
- [volley文件上传]Android中自定义MultipartEntity实现文件上传以及使用Volley库实现文件上传
- 第2周项目 求π
- Application Loader下载安装和上传app程序
- poj1155
- springMVC中复杂嵌套对象、List等集合类型数据绑定
- andriod GridView