GraphQL
你可能会说
前端说字段不够,后端说别再加接口了。
由客户端声明要什么字段的查询语言一个端点、按需取字段,解决多端字段不一致和接口爆炸;代价是缓存、权限、N+1 治理更复杂。
也常被叫作GraphQL API
什么时候选它
- 多端(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 取数;传输更省,但服务端控制更难。
延伸阅读 · 权威出处