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