Express是一个自身功能极简,由路由和中间件构成的一个开发框架,本质上,express应用就是在调用各种中间件。
中间件的功能:
执行任何代码。
修改请求和响应对象。
终结请求-响应循环。
调用堆栈中的下一个中间件。
1.应用级别的中间件 app.use
app.use 匹配所有的请求方式,可以直接传入请求处理函数,代表接受所有的请求
app.use((req, res, next) => {/*表示匹配任何路由*/ console.log(req.url); next();/*表示匹配完成这个中间件就继续往下执行。*/ });
app.use方法可以直接传递一个请求处理函数代表接受所有的请求。
只要客户端发来请求就可以匹配到当前的中间件。
2.路由中间件 app.get/post
app.get("/", function (req, res,next) { console.log("匹配成功"); next() }) app.get("/", function (req, res) { var list = [1, 6, 9, 8, 55, 66, 45] res.render('index', { "list": list }) })
3.异常处理中间件
//测试异常中间件 get app.get('/errTest',(req,res)=>{ throw new Error("error Test"); }); //异常处理中间件,错误优先的原则,由于中间件的顺序执行,一般写在最下面 app.use((err,req,res,next)=>{ res.status(200).send("========="+err.stack); });
4.内置中间件(静态路由匹配)
app.use('/static',express.static("public"));
表示现在可以通过带有“/static ”前缀的地址来访问public目录下的静态资源
5.第三方中间件
post请求在express中是不能直接获取的,但是我们可以使用
第三方中间件body-parser模块来获取。
npm install body-parser var express = require('express') var bodyParser = require('body-parser') var app = express() // parse application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // parse application/json app.use(bodyParser.json())
cookie-parser :解析客户端cookie中的数据,并将其保存为Request对象的cookie属性
const cookieParser=require('cookie-parser'); app.use(cookieParser());
express-session :解析服务端生成的sessionid对应的session数据,并将其保存为Request对象的session属性
常用中间件
// 一个有关文件上传的中间件,用于处理 multipart/form-data 类型的表单数据,它主要用于上传文件。 var multer = require('multer');