一、中间件结构
1、app.use([path],function)
path:是路由的url,默认参数‘/',意义是路由到这个路径时使用这个中间件
function:中间件函数
这个中间件函数可以理解为就是function(request,response,next)
这里安装是指涉及到第三方中间件的使用时,需要先安装好,然后在使用。
二、中间件分类
1、内置中间件
express.static 是Express目前唯一内置的一个中间件。用来处理静态资源文件。
app.use(express.static(__dirname + '/public'));
2、自定义中间件
app.use([path],function)第二个参数是function;function总共有三个参数(req,res,next);
当每个请求到达服务器时,nodejs会为请求创建一个请求对象(request),该请求对象包含客户端提交上来的数据。同时也会创建一个响应对象(response),响应对象主要负责将服务器的数据响应到客户端。而最后一个参数next是一个方法,因为一个应用中可以使用多个中间件,而要想运行下一个中间件,那么上一个中间件必须运行next()。
var express = require('express');
var app = express();
app.use(function(request,response,next){
if(request.url === '/'){
response.writeHead(200,{"Content-Type":"text/plain"});
response.end("This is home\n");
} else {
next();
}
})
app.use(function(request,response,next){
if(request.url === '/about'){
response.writeHead(200,{"Content-Type":"text/plain"});
response.end("This is about\n");
} else {
next();
}
})
app.use(function(request,response,next){
response.writeHead(404,{"Content-Type":"text/plain"});
response.end("404 not found!\n");
})
app.listen(1234,'localhost');
浏览器中访问: http://localhost:1234/ 展示This is home
浏览器中访问: http://localhost:1234/about 展示This is about、
3、第三方中间件
body-parser :解析body中的数据,并将其保存为Request对象的body属性。
cookie-parser :解析客户端cookie中的数据,并将其保存为Request对象的cookie属性
express-session :解析服务端生成的sessionid对应的session数据,并将其保存为Request对象的session属性
query:这个中间件将一个查询字符串从URL转换为JS对象,并将其保存为Request对象的query属性。、
4错误处理中间件:
- 错误处理中间件的定义与其他中间件函数基本相同,差别在于错误处理中间件函数有4个参数,(err,req,res,next)
- 错误处理中间件通常在所有其他中间件之后进行载入;
- Express 内附有一个缺省的错误处理中间件(处理程序),其位置位于中间函数集的末尾
错误处理中间件如下:
app.use(function(err,req,res,next){
console.log(err.stack);
res.status(500).send('Something broke!')
})