👋 欢迎来到 Java 和 DGS 入门 GraphQL!
您的GraphQL 旅程从现在开始!准备出发了吗?
在本系列中,我们将从头开始,使用 REST API 构建一个完整的 GraphQL 服务器。
在本课中,我们将
- 了解我们正在构建的内容以及帮助我们构建它的技术
- 设置我们的项目环境
什么是 GraphQL?
让我们从课程中最重要的一个问题开始。什么是 GraphQL?
GraphQL 是现代 Web 的开发者友好型 查询 语言。它改变了应用程序从 API 提取数据的方式,使您能够通过单个查询获得所需的确切内容,而不是从各种 REST 端点拼凑响应。
以强类型模式为核心,GraphQL 帮助您定义跨任意数量系统的 数据之间的关系,让您可以专注于数据的功能,而不是存储位置。
在本课程中,我们将学习 GraphQL 如何融入我们现有的体系结构,以及它如何与现有的 REST API 和其他 数据源 协同工作。我们将学习如何在 GraphQL API 中使用查询、变异、参数、模式和 解析器。准备撸起袖子,编写代码,测试您的理解,并构建一些很棒的东西!
什么是 DGS?
GraphQL 本身是一个规范,一个 API 的 查询 语言。要在服务器中实现 GraphQL,我们通常使用 GraphQL 框架。
DGS,或域图服务,是由 Netflix 团队创建的框架,它允许您在 Spring Boot 应用程序中使用 GraphQL,只需几个依赖项即可。在探索 GraphQL 的基础知识时,我们将学习如何使用 DGS 注解和方法,以及如何将我们的 Java 类连接到 GraphQL 功能。
先决条件
我们将从一个 Spring Boot 项目模板开始,并逐步添加我们的 DGS 依赖项。
要一起学习...
- 您应该熟悉 Java 基本编程概念。
- 您还需要安装 JDK 17 以及 IDE(我们推荐使用 IntelliJ IDEA 社区版)。
- 我们还建议您熟悉 Spring Boot 的基础知识,以及 如何使用 REST API 和 HTTP 请求。
- 奖励: 许多流行的 IDE 提供了插件,可以启用 GraphQL 语法高亮。在 IntelliJ 中,我们推荐使用 GraphQL 插件。
我们正在构建什么
想预订一次旅行,去广阔宇宙中新奇、激动人心的、有时是虚构的地方吗?加入 气闸!
使用气闸,您可以找到符合您的日期选择和所需床位数量的房源。了解每个地方的全部内容及其提供的便利设施,如果您感兴趣,您可以一键预订您的住宿(前提是您在钱包中拥有足够的太空积分)!
对于气闸 API 的第一个版本,我们将重点关注 房源:展示精选的星际地点,详细说明其功能和便利设施,以及添加新的房源。在未来的课程中,我们将使用 GraphQL 联合 来扩展我们的 API。
克隆存储库
在您选择的目录中,使用您喜欢的终端克隆应用程序的启动存储库
git clone https://github.com/apollographql-education/odyssey-intro-dgs.git
注意: 如果您在课程中的任何时候遇到困难,请随时查看 final
分支以获取帮助。
项目结构
我们的项目已经包含了我们开始和运行 Spring Boot 服务器所需的文件,但我们将主要在下面突出显示的 java
和 resources
包中工作。
📦 odyssey-intro-dgs┣ 📂 gradle┣ 📂 src┃ ┣ 📂 main┃ ┃ ┣ 📂 java┃ ┃ ┃ ┣ 📂 com.example.listings┃ ┃ ┃ ┃ ┣ 📄 ListingsApplication┃ ┃ ┃ ┃ ┗ 📄 WebConfiguration┃ ┃ ┗ 📂 resources┃ ┃ ┗ 📂 schema┃ ┗ 📂 test┣ 📄 build.gradle┣ 📄 gradlew┣ 📄 gradlew.bat┣ 📄 settings.gradle┗ 📄 README.md
现在,在您最喜欢的 IDE 中打开存储库。我们在示例中使用 IntelliJ IDEA 社区版。
让我们构建并运行应用程序
在您的 IDE 中,打开位于 com.example.listings
包中的主 ListingsApplication
文件。这是我们应用程序的起点。
@SpringBootApplicationpublic class ListingsApplication {public static void main(String[] args) {SpringApplication.run(ListingsApplication.class, args);}}
在 IntelliJ 中,我们在 main
函数旁边的边距中有一个方便的绿色播放按钮,或者位于界面顶部的那个按钮。
或者,您可以打开一个新终端到项目的根目录,并运行以下命令
./gradlew bootRun
在 IDE 的 运行 输出中,我们应该看到我们的应用程序正在运行!
> Task :ListingsApplication.main(). ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v3.2.5)
当然,它现在还没有做太多事情。让我们开始吧!
关键要点
- GraphQL 使您可以通过单个 查询 精确地检索数据,无需在客户端应用程序端浏览多个 REST 端点。
- 域 图 服务 (DGS) 是 Netflix 为 Java 开发人员开发的框架。
接下来
我们已经为我们将使用的工具奠定了基础,但我们仍然需要讨论它们如何协同工作。在下一课中,我们将深入了解基础知识,并跟踪 GraphQL 操作 的旅程。
分享您关于本课的问题和意见
本课程目前处于
您需要一个 GitHub 帐户才能在下面发布。没有帐户? 请改为在我们的 Odyssey 论坛中发布。