一、工作原理
1.当通过浏览器访问app.js建立的服务器时,看的一个简单的页面,实际上它已完成了很多工作;
2.当访问http://localhost:3000,浏览器会向服务器发送请求,包括请求的方法,路径,http协议版本和请求头信息。app会解析请求的路径,调用相应的逻辑,app.js中有app.get('/',router.index)通过res.render('index',{title:'pcat'})调用视图模版index,传递title变量,最终视力生成HTML页面,返回给浏览器。
浏览器接收到内容后,通过分析需要获取css文件,因此会再次向服务器发起请求,app.js没有指派到css的路由规则,但app通过app.use(express.static(__dimame+'/public'))配置了静态文件服务器,因此会定向到app.js所在目录下的public文件中的css文件。
二、创建路由规则(固定路径)
1.服务器响应头返回404 Not found错误是因为没有指定的路由规则,而且在public目录也没有找到相应文件
2.创建路由规则:
//参数一:请求路径;参数二:回调函数
app.get('/pact',routers.pcat)
//在index中添加:
export.pcat=function(req,res){
res.send('abc');
}
三、路由匹配(动态路径)
1.带参数
app.get('/user/:username'),function(req,res){
res.send('user:'+req.params.username);
});
2.正则
四、REST风格的路由规则
1.http协议定义了一下8个标准方法:
1).get 获取
2).post 新增
3).delete 删除
4).put 更新
5).head 响应头
6).trace 回显
7).connect 连接改为代理
8).options 返回服务器支持的http请求方法
2.幂等:重复请求多次与一次效果是一样的,如获取更新和删除等,新增不是。
3.不同的路由绑定函数不用相互回调
1.GET app.get(path,callback)
2.POST app.post(path,callback)
3.PUT app.put(path,callback)
4.DELETE app.delete(path,callback)
5.ALL app.all(path,callback)
五、控制权转移
app.all('/test/:user',function(req,res,next){
res.send("all:abc");
next();
});
app.get('/test/:user',function(req,res){
res.send("get:abc");
})
因为只会返回一次,所以next()函数将控制权交给后面的规则。