SuperAPI AI 工具集

graphql-expert

编程与开发

查看项目

更新于 10-16 10:39

技能介绍

GraphQL Expert 是一份用于设计与实现 GraphQL API 的综合指南型技能,适用于构建 GraphQL API、设计 schema、实现解析器或优化 GraphQL 性能的场景。资料将内容划分为基础概念、Schema 设计、查询设计、Mutation、解析器、性能优化、认证授权、错误处理、订阅、客户端集成、最佳实践与检查清单等部分。

基础概念:说明 GraphQL 是一种 API 查询语言,允许客户端只请求所需字段、一次请求获取多个资源、使用类型系统描述数据,并提供自省(自文档)能力;同时以对比示意展示 REST 的多端点固定结构与 GraphQL 单端点灵活查询的差异。

Schema 设计:介绍内置标量类型(String、Int、Float、Boolean、ID)、自定义标量(DateTime、JSON)、对象类型、枚举、接口、联合、输入类型;讨论可空性写法(String、String!、[String]、[String!]、[String]!、[String!]!)与最佳实践(默认可空,仅在保证非空时使用 !,列表通常使用 [Item!]!);并给出根类型 Query、Mutation、Subscription 的结构示例。

查询设计:包含基础查询、变量查询、多查询、分页与过滤排序。分页分为基于偏移量(limit/offset)与基于游标(推荐,first/after,配合 UserConnection、UserEdge、PageInfo、totalCount)两种方式。过滤排序通过 UserFilter、StringFilter、DateFilter、UserSortField、UserSort、SortDirection 等输入与枚举实现。

Mutation:介绍为 mutation 使用输入类型(CreatePostInput、UpdatePostInput)、返回负载类型(CreatePostPayload、Error)、批量 mutation(bulkDeletePosts、bulkUpdatePosts)以及调用示例。

解析器:给出 TypeScript 解析器实现示例,包括 Query/Mutation 解析器、字段解析器、Context 结构(user、dataSources、loaders)以及服务端上下文初始化方式。

性能优化:介绍使用 DataLoader 解决 N+1 问题、查询复杂度限制(createComplexityLimitRule、字段级 @complexity)、查询深度限制(graphql-depth-limit)、持久化查询(createPersistedQueryLink、persistedQueries 与缓存)。

认证与授权:介绍基于上下文的认证(从 Authorization 头解析 token 并在解析器中校验)与基于指令的授权(@auth 指令、AuthDirective 实现)。

错误处理:展示使用 ApolloError、AuthenticationError、ForbiddenError、UserInputError 及自定义 NotFoundError,并通过 formatError 记录内部错误与屏蔽敏感信息。

订阅:介绍 PubSub 的发布订阅实现、withFilter 按房间与用户过滤,以及 Subscription 类型定义。

客户端集成:介绍 Apollo Client 初始化(createHttpLink、setContext 添加认证头、InMemoryCache),React 的 useQuery 与 useMutation 使用方式。

最佳实践与检查清单:列出应做(从客户端视角设计 schema、mutation 使用输入类型、返回带错误的负载、实现 DataLoader、使用游标分页、添加复杂度限制、谨慎版本化)与不应做(直接暴露数据库 schema、不必要的深层嵌套、忽略授权、允许无界查询、跳过错误处理、忽略缓存、在查询中修改数据)等要点,并给出类型命名、可空性、输入类型、负载错误处理、分页、认证授权、性能优化等 schema 检查清单。

限制方面:资料未提供具体收费、价格、平台支持范围、安装命令或版本要求等信息,暂未提供。