一、分类
1、局部使用中间件
const express = require('express');
const app = express();
app.listen(3000, () => {
console.log('服务器已启动!!!');
})
app.get('/', (req, res, next) => {
// 局部使用
req.body = {
name: "雷佳音",
age: 45
}
next()
}, (req, res) => {
console.log(req.body);
res.send('这是一个根请求')
})
2、全局使用中间件
const express = require('express');
const app = express();
app.listen(3000, () => {
console.log('服务器已启动!!!');
})
// 全局使用中间件
app.use(fn)
function fn(req, res, next) {
req.body = {
name: "雷佳音",
age: 45
}
next()
}
app.get('/', (req, res) => {
console.log(req.body);
res.send('这是一个根请求')
})
二、自定义中间件
自定义中间件获取post请求提交的参数
const express = require('express');
const app = express()
app.listen(3000, () => {
console.log('服务器已启动!!!');
})
const qs = require('querystring')
function getPostData(req, res, next) {
let str = ''
req.on('data', (chunk) => {
str += chunk
})
req.on('end', () => {
if (req.headers['content-type'] == 'application/json') {
req.body1 = JSON.parse(str)
} else {
req.body1 = qs.parse(str)
}
next()
})
}
app.use(getPostData)
app.post('/login2', (req, res) => {
console.log(22, req.body1);
res.send('登录成功')
})
三、使用第三方中间件
使用第三方中间件获取post请求参数
const express = require('express');
const app = express()
app.listen(3000, () => {
console.log('服务器已启动!!!');
})
let bodyParser = require('body-parser');
app.use(bodyParser.json())
app.post('/login3', (req, res) => {
console.log(req.body);
res.send('响应成功')
})
四、异常处理中间件和404中间件
1、异常处理中间件
const express = require('express');
const app = express()
app.listen(3000, () => {
console.log('服务器已启动!!!');
})
app.use(express.static('./static'))
app.get('/', (req, res) => {
res.sendFile('./static/index.html')
})
app.use((err, req, res, next) => {
res.redirect('/error.html')
})
2、404中间件(请求不存在时给前端一个友好的提示)
const express = require('express');
const app = express()
app.listen(3000, () => {
console.log('服务器已启动!!!');
})
app.use(express.static('./static'))
app.get('/123', (req, res) => {
res.send('123ok')
})
// 如果请求路径不存在,那么就返回404页面
app.use((req, res, next) => {
res.redirect('/404.html')
next()
})