中间件
基本语法:
function (req,res,next) => {
if (...) {
//...
res.json({
...
message: '缺少必要的参数'
})
} else {
next()
}
}
req: 传入参数;
res: 返回参数;
next: 函数,若条件通过则执行下一步 (可能是下一个中间件也可能是路由方法);
多个中间件的执行顺序跟引用顺序一致
全局中间件
在app.js中使用 app.use()每个路由执行时都会调用
在特定路由使用
router.get('/list',[中间件,中间件,中间件...], async (req, res) => {
...
res.json({
message: 'ok',
})
})
示例token验证:
tokencheck.js
/**
* 中间件:验证token
*/
const checkToken = require('../../utils/token') // redis缓存与创建token文件
const outputFormat = require('../outputFormat/outputFormat') // 统一格式出口
module.exports = async (req, res, next) => {
let token = req.headers.hasOwnProperty('authorization') ? req.headers.authorization.split(' ')[1] : null
let jwt = new checkToken(token);
let tokenData = await jwt.verifyToken();
if (!tokenData) {
outputFormat(res, '', '登录失效,请重新登录', 10086)
} else {
next()
}
}
使用:
const tokenCheck = require('../../middleware/tokencheck')
/**
* 会员信息
* @userId 用户id
*/
router.post('/userInfo', [tokenCheck], async (req, res) => {
try {
...
} catch (error) {
outputFormat(res, '', error, 101)
}
})
本文详细介绍了中间件的基本语法及在Express框架中的应用,包括如何使用中间件进行参数检查和全局错误处理。特别聚焦于Token验证中间件的实现,演示了如何在请求头部获取Token并利用Redis缓存进行有效性验证。

2656

被折叠的 条评论
为什么被折叠?



