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

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

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

学习

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

更多

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

© 2026 CodeRoadMap

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

GraphiQL 与 introspection

调试工具、内省查询、安全注意。

25 分钟

GraphiQL 与 introspection

GraphQL 自带 内省(introspection):客户端可查询 Schema 元数据,驱动 GraphiQL、Apollo Studio、codegen。开发利器,生产需 谨慎暴露。

学习目标

  • 使用 GraphiQL 编写、格式化、查看文档
  • 执行内省查询理解类型系统
  • 知道生产环境关闭或限制内省的原因

核心内容

GraphiQL 基本操作

Spring 启用 spring.graphql.graphiql.enabled=true 后访问 /graphiql:

  1. 左侧写 Query,Ctrl+Enter 执行
  2. Docs 面板浏览 Track、Lesson 类型
  3. Variables 面板填 $slug 等

与 Postman 调 REST /tracks 类似,但响应形状 随 Query 变化。

内省查询示例

query IntrospectSchema {
  __schema {
    types {
      name
      kind
    }
  }
}

查单个类型字段:

query IntrospectTrack {
  __type(name: "Track") {
    fields {
      name
      type { name kind ofType { name } }
    }
  }
}

Apollo、GraphQL Code Generator 据此生成 TypeScript 类型,供 react-essentials / nextjs-essentials 使用。

其他工具

工具用途
GraphiQL浏览器 IDE(Spring 内置)
Apollo Sandbox云端 Schema 协作
graphql-inspectorCI 中 Schema 破坏性变更检测
Altair / Insomnia通用 API 客户端 GraphQL 模式

REST 侧等价物:OpenAPI Swagger UI(spring-boot-essentials 可开 springdoc)。

安全注意

内省暴露 全部类型与字段,攻击者可构造深度嵌套 Query。生产:

  • 关闭 GraphiQL
  • 禁用或鉴权后开放 __schema
  • 与 gql-security 深度限制配合

CodeRoadMap 公开 文档站靠 REST,不依赖对外 GraphQL introspection。

练习

  • 在 GraphiQL 用 Docs 拼出 track(slug: "...") { lessons { slug } }
  • 运行 ,列出根 Query 字段
__type(name: "Query")
  • 对比:Swagger 看 /tracks OpenAPI 与 GraphiQL 看 Schema 的体验差异
  • 小结

    GraphiQL + introspection = 开发效率;生产默认关闭。 下一课安全、限流与鉴权。

    加载本节练习…
    ← 上一课GraphQL vs REST 选型下一课 →安全与限流