REST端点返回大量多余数据,而客户端只需要几个字段?GraphQL彻底改变了这种方式:一个端点,客户端只请求所需内容。类型化模式、subscriptions用于实时通信、Apollo用于缓存。没有过度获取和欠获取。

我们提供的服务

GraphQL是一种带有类型化模式的API查询语言和运行环境。一个端点,客户端自行决定请求哪些字段和关系。没有过度获取,没有欠获取。Queries用于读取,mutations用于写入,subscriptions用于实时通信。

  • 类型化模式 — Schema Definition Language(SDL)。每个类型、字段和参数都严格类型化。错误在编译阶段而非运行时发现。GraphQL与React客户端和Next.js配合良好

  • 单一端点 — /graphql替代数十个REST路由。所有请求通过POST,通过GraphiQL或Apollo Studio直接从浏览器进行模式自省

  • Subscriptions(实时) — 基于WebSocket的变更订阅。聊天、通知、活动动态 — 全部通过统一机制实时实现

  • Apollo / Relay — 带有缓存、乐观更新和类型代码生成的客户端库

GraphQL · Schema · Queries · Mutations · Apollo

GraphQL开发原则

GraphQL是一种声明式查询语言。客户端描述需要什么数据,并精确获取这些数据。不多一个字节。严格类型化、自省、单一端点。

模式和类型

类型、接口、联合类型、枚举。在模式层面进行严格验证。每个查询在执行前都会经过检查 — 错误不可能发生。

Apollo Server / Client

Apollo Server带有缓存和授权。Apollo Client带有InMemoryCache、乐观更新和从模式生成类型代码。

Subscriptions实时

基于WebSocket的subscriptions。为聊天、通知、活动动态和协作应用提供即时更新。

GraphQL改变了游戏规则:现在由客户端决定接收什么数据。前端开发人员编写查询,精确获取屏幕所需内容。无需就每个字段与后端协调。

GraphQL Apollo Schema TypeScript React Node.js Python PostgreSQL Redis WebSocket Docker

GraphQL API开发生命周期

GraphQL是客户端和服务器之间基于严格模式的契约。我们采用schema-first设计,自动生成类型,并测试每个解析器。

  • 模式设计 — Schema-first方法。首先进行类型、query root和mutation root的SDL描述。客户端在服务器开发开始前即获得模式。

  • 解析器和DataLoader — 通过DataLoader进行批处理的高效解析器。N+1问题从架构层面解决,而非使用临时方案。

  • REST + GraphQL混合 — 结合REST用于简单CRUD操作和GraphQL用于复杂查询。统一的身份验证和授权。

  • Codegen和类型化 — GraphQL Codegen从模式自动生成TypeScript类型。客户端代码完全类型化,错误在编译阶段发现。

  • Subscriptions和实时 — 通过Apollo或graphql-ws的WebSocket订阅。聊天、通知、协作编辑 — 全部实时实现。

  • 移动应用的GraphQL — 客户端只请求必要的字段,无过度获取。对于带宽有限的iOS和Android非常理想。


GraphQL Codegen — 从模式自动生成类型

模式描述 → 生成TypeScript类型、React hooks和文档。无需手动重复。修改模式 — 类型自动更新。

为什么选择我们的GraphQL

订购GraphQL API — 获得灵活、类型化且高性能的数据层,加速前端开发并消除不必要的查询。

先有SDL模式后有后端

我们在编写解析器之前用SDL设计GraphQL模式。类型、关系、变更 — 前端从第一天起就看到现成的契约。

解析器自动化测试

每个解析器的单元测试、模式的集成测试、使用Apollo Studio的自动部署。模式变更不会破坏客户端。

GraphQL Playground

交互式文档,可直接在浏览器中执行查询。通过WebSocket实时订阅。

GraphQL查询示例:
// 查询:客户端只获取所需字段
query {
  users(limit: 10, status: "active") {
    id
    name
    email
    orders { total }
  }
}
// 无过度获取 — 仅id、name、email和订单总额

GraphQL — 灵活但不混乱。客户端精确获取所请求的内容,服务器保证类型和结构。前端和后端独立发展,但保持兼容 — 模式维护秩序。

联系我们

如有任何疑问或合作机会,请随时联系我们。

讨论项目