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');