1、什么是中间件
中间件完整的结构:
1、是一个函数
2、四个参数:err, req, res, next
// /test?name=1234
function valid_name_middleware (req,res,next) {
let{name} = req.query
if( !name || name.length) {
res.json({message: '缺少name参数'})
} else {
next()
}
}
app.use('*',valid_name_middleware)
app.get('/test',(req,res) => {
let {name} = req.query
res.json({
name
})
})
2、内置中间件和第三方中间件
内置中间件:(具体使用在官网查看)
- express.static
- express.json
- express.urlencoded
第三方中间件:
3、自定义中间件
const express = require('express')
const router = express.Router()
router.use(function(req,res,next) => {
console.log('log from router')
next()
})
function valid_router_middleware(req,res,next) {
let {username,password} = req.query
if(!username || !password) {
res.json({message: '参数错误'})
} else {
req.formdata = {
username,
password
}
next()
}
}
router.get('/login',[valid_router_middleware],(req,res,next) => {
let {formdata} = req
res.json({message: 'success'})
})
//第二个参数 数组中可以放多个中间件,按顺序运行,最后回调
学习来源:慕课网 一缕孤烟