用途:面向 GraphQL API 的设计与实现,涵盖联邦(Apollo Federation)与查询优化。资料说明在实现 GraphQL API、搭建 federation 或优化查询时使用。
主要能力:
- GraphQL 与 REST 对比:GraphQL 特点为单次按需查询、无版本化、自动 introspection;REST 则为多端点、易过度获取、需 v1/v2/v3 版本管理。
- Apollo Federation:各服务定义带 @key 的类型(如 type User @key(fields: "id")),其他服务用 extend type User 与 @external 扩展字段,Gateway 自动组合各服务。
- N+1 问题与 DataLoader:直接在每个用户上查询 orders 会产生 N+1 查询;使用 DataLoader 批量加载,按其资料示例先批量取回再按 id 映射,从而减少查询次数。
- 常用模式:Relay 风格分页(UserConnection,含 edges、node、cursor、pageInfo 的 hasNextPage、endCursor);错误处理采用 payload 结构,如 CreateUserPayload 含 user 与 errors[{field, message}]。
- 优化手段:DataLoader(批处理 + 缓存)、Persisted Queries(哈希查找)、Depth Limiting(防 DoS)、Cost Analysis(查询预算)。
使用方式:资料未给出安装命令或具体运行步骤,仅提及可参考 @api-designer 进行设计,也未提供完整代码示例。
适用场景:GraphQL API 实现、Apollo Federation 拆服务、schema 设计、resolver 编写与查询性能调优。
限制:资料为要点式介绍,安装方式、依赖版本、平台与收费信息暂未提供;具体实现细节需结合官方文档。