中间件链:在解析器执行前后注入权限、日志与性能监控
本教程将展示如何利用 graphql-middleware 库构建可组合的中间件栈,实现细粒度的访问控制、执行时间测量、以及自动缓存结果。 · 难度:入门 · +10XP
中间件链:在解析器执行前后注入权限、日志与性能监控
很多开发者直接在解析器中写权限检查、日志记录,导致代码重复。本课程教你使用 graphql-middleware 库将横切关注点分离成独立的中间件函数,并像洋葱模型一样组合它们。你将学习如何编写一个权限中间件(检查角色)、一个日志中间件(记录查询耗时)、一个缓存中间件(Redis 缓存结果),并且处理中间件之间的数据传递(如将检查结果存到 context)。
const { applyMiddleware } = require('graphql-middleware');
const logMiddleware = async (resolve, root, args, context, info) => {
const start = Date.now();
const result = await resolve(root, args, context, info);
console.log(${info.fieldName} took ${Date.now() - start}ms);
return result;
};
const schema = applyMiddleware(makeExecutableSchema({ typeDefs, resolvers }), logMiddleware);