服务端搭建好后,客户端怎么高效地消费GraphQL API?这一章讲HTTP请求方式、两大客户端库(Apollo Client和Relay)、缓存策略与状态管理、UI集成模式、代码生成与类型安全、以及持久化查询的性能优化。
GraphQL的客户端实践比REST复杂——因为数据获取的灵活性带来的是状态管理的挑战。怎么缓存、怎么更新、怎么做乐观UI,这些在REST中往往不是问题(因为HTTP缓存帮你搞定了),在GraphQL中需要客户端库来解决。
第一节:请求发送与持久化查询。从原生 fetch 发送 GraphQL 请求讲起,覆盖 POST/GET/multipart 三种传输方式,再重点讲 APQ 持久化查询如何减少传输、加固安全、配合 CDN 缓存。
第二节:Apollo Client 与 Relay 客户端库。两大主流客户端的架构与使用方式:Apollo 的 Link 体系、缓存策略、hooks API;Relay 的编译时优化、Fragment 容器。最后给出对比表帮助选型。
第三节:状态管理与缓存策略。规范化缓存是 GraphQL 客户端缓存的核心,这一节讲清楚它为什么是必要的、缓存键怎么设计、Mutation 后如何更新、本地状态如何与远程数据统一管理。
第四节:UI 集成与数据绑定模式。组件与查询怎么映射、Fragment 组合如何避免瀑布式请求、分页、乐观更新、错误处理——前端集成的完整模式库。
第五节:代码生成与类型安全。GraphQL Code Generator 把 Schema 变成 TypeScript 类型和 hooks,让字段改名在编译期就暴露问题。这一节讲配置、生成产物和 CI 集成。
本章的代码示例以 React 为主,但思路适用于所有前端框架。读的时候可以带着一个自己的页面场景:如果这个页面用 GraphQL 重写,查询怎么组织、缓存怎么更新、错误怎么处理——带着问题读,比顺着示例读更能沉淀出可迁移的方法。