CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
GraphQL 入门/课时/GraphQL vs REST 选型
RawBlame
课时目录12 节

GraphQL 入门

  1. 01GraphQL 是什么
  2. 02Schema 与类型
  3. 03Query 与字段选择
  4. 04Mutation
  5. 05Resolver 模型
  6. 06Spring for GraphQL
  7. 07N+1 与 DataLoader
  8. 08Apollo Client
  9. 09GraphQL vs REST 选型
  10. 10GraphiQL 与 introspection
  11. 11安全与限流
  12. 12综合练习

GraphQL vs REST 选型

BFF、过度获取、CodeRoadMap 保持 REST 的理由。

25 分钟

GraphQL vs REST 选型

没有银弹:GraphQL 解决字段组合与多端差异;REST 在资源稳定、缓存简单、团队熟悉时往往更优。 CodeRoadMap deliberately 选择 REST 作为主 API。

学习目标

  • 列出 GraphQL 优势与代价
  • 理解 BFF 层使用 GraphQL 的典型场景
  • 能向团队解释本站为何保持 /tracks REST

核心内容

对比矩阵

维度REST(本站)GraphQL
学习曲线低,HTTP 动词 + JSON中,Schema + Resolver + 客户端
过度获取靠 DTO 分层客户端选字段
欠获取 / 往返多次 GET 或聚合接口单次嵌套 Query
CDN/HTTP 缓存GET /tracks 易缓存POST 为主,缓存靠客户端
文件上传multipart 成熟常仍走 REST 侧车
监控路径即指标需解析 operationName
安全面端点固定深度/复杂度攻击面

CodeRoadMap 选 REST 的理由

  1. 资源清晰:track、lesson 与 URL /tracks/{slug}/lessons/{lessonSlug} 一一对应,SEO 与 nextjs-essentials RSC 友好
  2. 只读为主:课程站点写操作少,Mutation 优势不明显
  3. 栈统一:spring-boot-essentials 团队已有 @RestController、OpenAPI、JWT 模式
  4. 运维简单:网关限流按路径;GraphQL 需额外复杂度预算(gql-security)
  5. 数据在 MySQL:关系明确,JOIN 可预测;mongodb-essentials 文档库为可选扩展,非 GraphQL 前提

何时引入 GraphQL

  • 移动 App + Web + 合作伙伴 API 字段差异大
  • 微服务聚合层(BFF)减少客户端编排
  • 内部 Admin 控制台动态表单、报表

可 REST + GraphQL 并存:公开读 /tracks,内部 Admin 用 /graphql——但需双倍维护 Schema 与 DTO 一致性。

与 React 数据获取

react-essentials 中 useLesson 绑 REST URL 即可;换 GraphQL 是 客户端 transport 替换,不是业务模型革命。

练习

  • 为你熟悉的一个项目写 3 条「选 REST」和 2 条「可考虑 GraphQL」的理由
  • 画架构图:platform → REST /tracks vs platform → GraphQL → 多个微服务
  • 阅读本站 TrackController,列出若改 GraphQL 需迁移的 endpoint
  • 小结

    选型看团队、缓存、客户端多样性;CodeRoadMap 主 API 坚持 REST /tracks。 下一课 GraphiQL 与 introspection 调试。

    加载本节练习…
    ← 上一课Apollo Client下一课 →GraphiQL 与 introspection