标签:regex code ... tty root 执行 res 表达 运行
这关乎于Nodejs的express路由规则(http://hm4123660.iteye.com/blog/2195035)
express 封装了多种 http 请求方式,我们主要只使用 get和post,可以使用 app.all 获取所以请求方式,回调函数有两个参数分别是 req 和 res,代表请求信息和响应信息。
: 处理 get 请求
: 处理 /:xxx 形式的 get 请求
: 处理 post 请求
: 可以处理 get 和 post 请求,但查找优先级由高到低为req.params→req.body→req.query
例如:
获取表达post的参数
var username=req.body.name;//获取post参数
var password=req.body.password;
获取get参数
访问URL:http://localhost:3000/test?id=110&password=120
获取代码:
app.get(‘/test‘,function(req,res){
res.send("id: "+req.query.id+" password: "+req.query.password);
})
例如:
app.get(‘/test/*‘,function(req,res){
res.send(req.originalUrl);//req.originalUrl获取当前URL
});
*号可以通配URL为localhost:3000/test/.......的URL
二. /:id的占位标识符URL
例如:
app.get(‘/test/:userid‘,function(req,res){
res.send("userid: "+req.params.userid);//req.params.userid获取userid的值
});
不能继续使用/
express的路由控制有个next()功能,在定义了多个路由的时候,使用next对匹配的url会按顺序执行,
如果不使用next进行权限转移,只会执行第一个满足的路由规则。
<span class="token comment">next() 函数用于将当前控制权转交给下一步处理,如果给 next() 传递一个参数时,表示出错信息</span>
例如:
app.get(‘/test/*‘,function(req,res,next){
//res.send("userid:");//要进行转移,不要响应客户端
req.temp="给你控制权";
next();//把权限转移到下一个路由
});
app.get(‘/test/next‘,function(req,res){
res.send("content: "+req.temp);
})
访问URL:http://localhost:3000/test/next满足这两个路由规则
运行结果:
next()一般用来编写中间件
比如:
// 检查用户是否登录中间件,所有需要登录权限的页面都使用此中间件
function checkLogin (req, res, next) {
if (req.session.user) {
next();//检验到用户已登入,转移权限阁下一个路由
} else {
res.redirect(‘/‘);//否则,页面重定位,不执行下面路由
}
}
标签:regex code ... tty root 执行 res 表达 运行
原文地址:http://www.cnblogs.com/haimingpro/p/6218926.html