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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
GraphQL 入门/课时/Schema 与类型
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综合练习

Schema 与类型

SDL、Object/Scalar、Query 根类型。

30 分钟

Schema 与类型

GraphQL Schema 是 API 的契约:定义有哪些类型、哪些字段可读(Query)、可写(Mutation)。常用 SDL(Schema Definition Language)描述。

学习目标

  • 编写 Object、Scalar、List、Non-null 类型
  • 理解 Query 根类型与字段签名
  • 能将 REST 资源映射为 GraphQL 类型(概念练习)

核心内容

SDL 基础

type Track {
  slug: String!
  title: String!
  level: String
  lessons: [Lesson!]!
}

type Lesson {
  slug: String!
  title: String!
  duration: Int
  contentMd: String
}

type Query {
  tracks: [Track!]!
  track(slug: String!): Track
}
  • ! 表示非空;[Lesson!]! 表示非空列表,元素也非空
  • 标量:String、Int、Float、Boolean、ID;复杂结构用自定义 Object

与 REST 资源对照

REST GET /tracks/{slug} 返回的 JSON 可建模为 Track;嵌套 lessons 在 REST 里可能是第二次请求或 ?include=lessons。Schema 把 关系显式化,便于 react-essentials / nextjs-essentials 前端生成类型(codegen)。

输入类型预览

Mutation 常用 Input(下一课详述):

input CreateTrackInput {
  slug: String!
  title: String!
  level: String
}

注意:CodeRoadMap 生产库表 cf_track、cf_lesson 在 MySQL;GraphQL Schema 是 API 视图,不替代 mongodb-essentials 或 SQL 建模,只是另一种暴露层。

Schema 即文档

团队以 schema.graphqls 为单一真相源;Spring for GraphQL 启动时加载(见 gql-spring)。

练习

  • 为 Track 增加 description、estimatedWeeks 字段
  • 写出 Query 根上 lesson(trackSlug: String!, lessonSlug: String!): Lesson 签名
  • 对照 schema.sql 中 cf_track 列,标出哪些适合放进 GraphQL 类型

小结

Schema 定义「能问什么、返回什么形状」。 本站 REST 已覆盖 track/lesson;GraphQL Schema 用于实验与选型理解。下一课 Query 与字段选择。

加载本节练习…
← 上一课GraphQL 是什么下一课 →Query 与字段选择