Koa 的 ctx 是什么如何使用
· 阅读需 2 分钟
ctx
在 Koa 中是上下文(Context)的缩写,它是一个封装了 Node.js 的 request
和 response
对象的对象,用于在中间件之间传递信息和状态。下面是一个简单的例子来说明这个过程
const Koa = require('koa');
const app = new Koa();
// 第一个中间件
app.use(async (ctx, next) => {
// 设置一个用户信息对象到 ctx.state,这个是中间件间共享的状态对象
ctx.state.user = { name: '张三', age: 30 };
await next(); // 调用下一个中间件
});
// 第二个中间件
app.use(async (ctx, next) => {
// 读取上一个中间件设置的用户信息
const user = ctx.state.user;
// 做一些操作,比如权限检查
if (user.name === '张三') {
await next(); // 用户名匹配,继续下一个中间件
} else {
ctx.status = 403; // 用户名不匹配,返回403 Forbidden
}
});
// 第三个中间件
app.use(async (ctx) => {
// 再次读取用户信息,用于生成响应
const user = ctx.state.user;
// 设置响应体为用户信息
ctx.body = `欢迎 ${user.name},您的年龄是 ${user.age}岁`;
});
app.listen(3000);
第一个中间件在 ctx.state
对象上设置了 user
对象。
第二个中间件检查了 ctx.state.user
,并根据用户信息决定是否继续执行下一步。
第三个中间件使用了 ctx.state.user
来构建响应。