1. 课程概述和设置
3m

👋 欢迎来到 Java 和 DGS 入门 GraphQL!

您的 旅程从现在开始!准备出发了吗?

在本系列中,我们将从头开始,使用 REST API 构建一个完整的

在本课中,我们将

  • 了解我们正在构建的内容以及帮助我们构建它的技术
  • 设置我们的项目环境

什么是 GraphQL?

让我们从课程中最重要的一个问题开始。什么是 GraphQL

是现代 Web 的开发者友好型 语言。它改变了应用程序从 API 提取数据的方式,使您能够通过单个查询获得所需的确切内容,而不是从各种 REST 端点拼凑响应。

以强类型模式为核心, 帮助您定义跨任意数量系统的 数据之间的关系,让您可以专注于数据的功能,而不是存储位置。

在本课程中,我们将学习 如何融入我们现有的体系结构,以及它如何与现有的 REST API 和其他 协同工作。我们将学习如何在 GraphQL API 中使用查询、、模式和 。准备撸起袖子,编写代码,测试您的理解,并构建一些很棒的东西!

A diagram showing GraphQL as the contact point between multiple clients and the complex architecture of a modern backend

什么是 DGS?

本身是一个规范,一个 API 的 语言。要在服务器中实现 GraphQL,我们通常使用 GraphQL 框架。

DGS,或域图服务,是由 Netflix 团队创建的框架,它允许您在 Spring Boot 应用程序中使用 ,只需几个依赖项即可。在探索 GraphQL 的基础知识时,我们将学习如何使用 DGS 注解和方法,以及如何将我们的 Java 类连接到 GraphQL 功能。

https://netflix.github.io/dgs/

The DGS homepage, with the title GraphQL Made Easy for Spring Boot

先决条件

我们将从一个 Spring Boot 项目模板开始,并逐步添加我们的 DGS 依赖项。

要一起学习...

我们正在构建什么

想预订一次旅行,去广阔宇宙中新奇、激动人心的、有时是虚构的地方吗?加入 气闸

The Airlock app homepage with a list of places to book.

使用气闸,您可以找到符合您的日期选择和所需床位数量的房源。了解每个地方的全部内容及其提供的便利设施,如果您感兴趣,您可以一键预订您的住宿(前提是您在钱包中拥有足够的太空积分)!

对于气闸 API 的第一个版本,我们将重点关注 房源:展示精选的星际地点,详细说明其功能和便利设施,以及添加新的房源。在未来的课程中,我们将使用 来扩展我们的 API。

克隆存储库

在您选择的目录中,使用您喜欢的终端克隆应用程序的启动存储库

git clone https://github.com/apollographql-education/odyssey-intro-dgs.git
任务!

注意: 如果您在课程中的任何时候遇到困难,请随时查看 final 分支以获取帮助。

项目结构

我们的项目已经包含了我们开始和运行 Spring Boot 服务器所需的文件,但我们将主要在下面突出显示的 javaresources 包中工作。

📦 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 文件。这是我们应用程序的起点。

@SpringBootApplication
public 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)
任务!

当然,它现在还没有做太多事情。让我们开始吧!

关键要点

  • 使您可以通过单个 精确地检索数据,无需在客户端应用程序端浏览多个 REST 端点。
  • 服务 (DGS) 是 Netflix 为 Java 开发人员开发的框架。

接下来

我们已经为我们将使用的工具奠定了基础,但我们仍然需要讨论它们如何协同工作。在下一课中,我们将深入了解基础知识,并跟踪 的旅程。

下一步

分享您关于本课的问题和意见

本课程目前处于

测试版
.您的反馈有助于我们改进!如果您卡住或困惑,请告诉我们,我们会帮助您。所有评论都是公开的,必须遵守 Apollo 行为准则。请注意,已解决或已处理的评论可能会被删除。

您需要一个 GitHub 帐户才能在下面发布。没有帐户? 请改为在我们的 Odyssey 论坛中发布。