返回
Egg框架初始化流程以及基础中间件封装与应用
后端
2024-01-10 06:11:59
Egg框架初始化流程
Egg框架的初始化流程大致可以分为以下几个步骤:
- 创建项目
- 安装依赖
- 启动项目
- 配置中间件
- 配置路由
Egg框架基本中间件
Egg框架提供了丰富的中间件,这些中间件可以帮助我们处理各种各样的请求,比如异常处理、参数校验、参数过滤、token校验等。
异常处理中间件
异常处理中间件可以帮助我们处理请求过程中发生的异常。当请求发生异常时,异常处理中间件会捕获异常并将其转换为HTTP响应。
参数校验中间件
参数校验中间件可以帮助我们校验请求中的参数是否合法。当请求中的参数不合法时,参数校验中间件会返回错误响应。
参数过滤中间件
参数过滤中间件可以帮助我们过滤请求中的参数。当请求中的参数中包含非法字符或敏感信息时,参数过滤中间件会将其过滤掉。
token校验中间件
token校验中间件可以帮助我们校验请求中的token是否合法。当请求中的token不合法时,token校验中间件会返回错误响应。
Egg框架中间件封装与应用
异常处理中间件封装
// app/middleware/exception.js
module.exports = () => {
return async (ctx, next) => {
try {
await next();
} catch (err) {
ctx.body = {
code: err.code || 500,
message: err.message,
};
}
};
};
参数校验中间件封装
// app/middleware/validate.js
module.exports = () => {
return async (ctx, next) => {
try {
await next();
} catch (err) {
if (err.errors) {
ctx.body = {
code: 400,
message: err.errors[0].message,
};
} else {
ctx.body = {
code: 500,
message: err.message,
};
}
}
};
};
参数过滤中间件封装
// app/middleware/filter.js
module.exports = () => {
return async (ctx, next) => {
const body = ctx.request.body;
for (const key in body) {
if (/[<>&"']/.test(body[key])) {
delete body[key];
}
}
await next();
};
};
token校验中间件封装
// app/middleware/token.js
module.exports = () => {
return async (ctx, next) => {
const token = ctx.request.headers['authorization'];
if (!token) {
ctx.body = {
code: 401,
message: 'Unauthorized',
};
return;
}
const decoded = jwt.verify(token, config.jwt.secret);
if (!decoded) {
ctx.body = {
code: 401,
message: 'Unauthorized',
};
return;
}
ctx.state.user = decoded;
await next();
};
};
Egg框架路由配置
Egg框架的路由配置非常简单,我们可以通过在app/router.js
文件中定义路由规则来配置路由。
// app/router.js
module.exports = app => {
app.get('/', 'home.index');
app.get('/users', 'user.list');
app.post('/users', 'user.create');
app.get('/users/:id', 'user.show');
app.put('/users/:id', 'user.update');
app.delete('/users/:id', 'user.destroy');
};
Egg框架中间件配置
Egg框架的中间件配置也非常简单,我们可以通过在app/config/config.default.js
文件中配置中间件来应用中间件。
// app/config/config.default.js
module.exports = {
middleware: [
'exception',
'validate',
'filter',
'token',
],
};
总结
本文介绍了Egg框架的初始化流程以及基本中间件的封装与应用。通过本文,读者可以了解Egg框架的基本使用以及如何封装和应用中间件。