选型

GraphQL

你可能会说

前端说字段不够,后端说别再加接口了。

由客户端声明要什么字段的查询语言一个端点、按需取字段,解决多端字段不一致和接口爆炸;代价是缓存、权限、N+1 治理更复杂。
也常被叫作GraphQL API
先问一句多端要不同字段?
默认GraphQL→擅长按需取数→别用简单公开 CRUD
成熟度采用

什么时候选它

  • 多端(Web / App / 小程序)字段需求差异大
  • 前端迭代快,不想每次加接口
  • 内部 BFF 聚合多个服务

什么时候别选

  • 简单 CRUD 或公开 API(REST 更直白、缓存友好)
  • 团队没有 N+1、权限、查询复杂度的治理能力
  • 需要 CDN / HTTP 缓存直接缓存响应
容易混在一起 · 怎么分
GraphQL≠REST

GraphQL 一次请求取多资源、字段由客户端定;REST 端点清晰、缓存和权限模型简单。

GraphQL≠gRPC

GraphQL 面向 UI 取数,JSON 灵活;gRPC 面向服务间调用,二进制强类型、性能高。

Q面试会问什么

  • 问:N+1 怎么解决?
    答:用 DataLoader 把同一层的请求批量合并,再限制查询深度和复杂度。
  • 问:和 REST 的区别?
    答:REST 按资源给固定响应,GraphQL 单一端点按 schema 取数;传输更省,但服务端控制更难。
延伸阅读 · 权威出处