SuperAPI AI 工具集

graphql

通用与其它

查看项目

更新于 10-16 07:25

技能介绍

用途:在 NestJS 中构建 GraphQL API 而非 REST,编写查询与变更 resolver,用订阅实现实时功能,使用 SDL 或 code-first 管理 schema,配置 Apollo Server 或 Mercurius,并配合 TypeScript 实现类型安全。

安装:Code First 使用 Apollo 时执行 npm i @nestjs/graphql @nestjs/apollo @apollo/server graphql;使用 Mercurius(Fastify)时执行 npm i @nestjs/graphql @nestjs/mercurius @apollo/server graphql mercurius。

两种方式:Code First 通过装饰器与 TypeScript 类,在 GraphQLModule.forRoot 中配置 driver: ApolloDriver 与 autoSchemaFile,运行时自动生成 schema,涉及 @ObjectType、@Field、@Resolver、@Query、@Mutation、@Args、@InputType、@Subscription、@ResolveField 等装饰器。Schema First 在 forRoot 中配置 driver: ApolloDriver、typePaths 与 definitions.path,通过 .graphql 文件定义类型、Query、Mutation、Subscription,再在 resolver 中以字符串名绑定。

主要能力:支持查询、变更、输入类型、订阅(需在模块中启用 graphql-ws,配合 PubSub)、GraphQL 模块与 forRootAsync 异步配置、字段 resolver、guards 与拦截器、自定义标量、分页、枚举、联合与接口。开发环境默认可在 http://localhost:3000/graphql 访问 GraphQL Playground,生产环境可设 playground: false 关闭。

适用场景:需要类型安全 GraphQL API 的 NestJS 项目;schema 由独立团队设计或需 schema stitching/federation 时倾向 Schema First。

限制与注意:资料建议 Code First 用于 TypeScript 项目,模型与输入类分开;用 DataLoader 避免 N+1;启用深度限制并谨慎使用订阅,注意扩展性问题;输入可用 class-validator 校验。其余如具体性能数据、收费与平台支持暂未提供。