1.应用级中间件
app.use((request, response, next)=>{
next();
})
2.路由级中间件
- 使用较少,
http://127.0.0.1:3000/news/add
只会进入到第一个视图 - 如果使用了路由中间件,则可以指定其继续向下匹配,从而匹配到第二个视图
app.get('/news/add', (req, res, next)={
console.log('测试');
next();
})
app.get('/news/:id', (req, res)=>{
res.send("新闻动态路由");
})
3.错误处理中间件
app.use((request, response, next)=>{
response.status(404).send("页面不存在");
})
4.内置中间件
app.use(express.status("static"))
5.第三方中间件
1.body-parse
,获取post
提交的请求体
-
- 安装依赖
cnpm install body-parser --save
-
- 引用
const bodyParser = require('body-parser')
-
- 配置中间件
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())
-
- 获取
post
数据
let body = request.body;
console.log(body.username)
2.cooike-parser
,处理cookie
数据
-
- 安装依赖
cnpm install cookie-parser --save
-
- 引用
const cookieParser = require('cookie-parser')
-
- 配置中间件
app.use(cookieParser())
-
- 设置
cookie
app.get('/', (request, response)={
response.cookie(
"username", "jack",
{
maxAge: 1000 * 60 * 60
},
)
})
cookie
加密
- 1.配置中间件时需要传入密钥
app.use(cookieParser('13k4mdk3mdm5k30df9sfm4kgj8dsfmk34'))
- 2.设置COOKIE时
signed:true
- 3.获取COOKIE时需要使用
response.signedCookies.username
-
- 获取
cookie
request.cookies.username
response.signedCookies.username
-
- 销毁
cookie
response.cookie("username", "jack", {maxAge: 0})
3.express-session
,处理session
数据
-
- 安装依赖
cnpm install express-session --save
-
- 引用
const session= require('express-session')
-
- 配置中间件
app.use(session(
{
secret: "su2udnbu2bjdbwhb32lknfrltk5mkfre5lm",
name: "xxx",
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 1000 * 60
},
rolling: true
}
))
-
- 设置
session
app.get('/', (request, response)={
request.session.username = "lucy";
request.session.age= 22;
})
-
- 获取
session
request.session.username
-
- 销毁
session
request.session.cookie.maxAge = 0;
6.分布式session
1.下载connect-mongo
模块
cnpm install connect-mongo --save
2.模块引入
const session = require('express-session');
const MongoStore = require('connect-mongo');
3.配置中间件
app.use(session(
{
secret: "su2udnbu2bjdbwhb32lknfrltk5mkfre5lm",
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 1000 * 60
},
rolling: true,
store: MongoStore.create({
mongoUrl: 'mongodb://127.0.0.1:27017/test-app',
touchAfter: 24 * 3600
})
}
))
4.其他存储