GraphQL #

什么是 GraphQL? #

GraphQL 是一种用于 API 的查询语言,也是一个满足你数据查询的运行时。它由 Facebook 于 2012 年开发,2015 年开源,旨在解决 REST API 的痛点。

核心定位 #

text
┌─────────────────────────────────────────────────────────────┐
│                         GraphQL                              │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  精确查询    │  │  单一端点    │  │  强类型      │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐         │
│  │  自省文档    │  │  版本无关    │  │  实时订阅    │         │
│  └─────────────┘  └─────────────┘  └─────────────┘         │
└─────────────────────────────────────────────────────────────┘

为什么选择 GraphQL? #

优势 #

text
✅ 精确获取
   - 只获取需要的数据
   - 避免过度获取和获取不足
   - 减少网络传输

✅ 单一端点
   - 所有操作通过 /graphql
   - 无需管理多个 REST 端点
   - 简化 API 设计

✅ 强类型系统
   - 编译时类型检查
   - 自动生成文档
   - IDE 智能提示

✅ 实时更新
   - Subscription 订阅机制
   - WebSocket 支持
   - 实时数据推送

快速开始 #

基本查询 #

graphql
query {
  user(id: "1") {
    name
    email
  }
}

变更操作 #

graphql
mutation {
  createUser(input: { name: "Alice", email: "alice@example.com" }) {
    id
    name
  }
}

订阅操作 #

graphql
subscription {
  onMessageCreated {
    id
    content
  }
}

文档结构 #

text
GraphQL 文档
├── 入门基础
│   ├── GraphQL 简介
│   └── 基础语法
│
├── 核心操作
│   ├── 查询操作
│   └── 变更操作
│
├── 类型系统
│   ├── Schema 定义
│   └── 类型系统
│
├── 服务端开发
│   └── 解析器
│
└── 高级主题
    └── 高级特性

GraphQL vs REST #

特性 GraphQL REST
端点 单一端点 多个端点
数据获取 精确控制 固定结构
请求次数 通常一次 可能多次
类型系统 强类型 无标准
文档 自动生成 手动维护
缓存 需要处理 HTTP 原生支持

学习路径 #

text
入门阶段
├── GraphQL 简介
├── 基础语法
└── 查询操作

进阶阶段
├── 变更操作
├── Schema 定义
├── 类型系统
└── 解析器

高级阶段
├── 订阅与实时数据
├── 认证与授权
├── 性能优化
└── 最佳实践

下一步 #

现在你已经了解了 GraphQL 的基本概念,接下来学习 GraphQL 简介,深入了解 GraphQL 的详细原理!

最后更新:2026-03-29