概述
是时候把我们学到的关于SDL 的知识运用起来了。
在本课中,我们将
- 定义我们的架构
构建架构
让我们导航到src
目录。在其中,我们将创建一个名为 schema.graphql
的新文件。
📂 src┣ 📄 graphql.d.ts┣ 📄 helpers.ts┣ 📄 index.ts┗ 📄 schema.graphql
✏️ 让我们定义该架构
参考我们特色房源的模型,我们确定需要为每个房源提供一些数据。
在本课程中,我们将跳过房源照片和整体评分,而是处理模型的简化版本。
以下是我们将开始使用的基本 字段:
标题
床位数量
每晚费用
是否已关闭预订
我们还需要一个 字段,我们可以用它来区分一个房源与另一个房源——我们将这个字段命名为 id
。
有了我们的 字段 集,让我们让 Listing
类型活跃起来!
The Listing
类型
让我们在 schema.graphql
文件中定义 Listing
类型,并立即添加描述。
"A particular intergalactic location available for booking"type Listing {# Fields go here}
现在,对于房源的 字段,我们将有:
id
类型为ID!
title
类型为String!
numOfBeds
类型为Int
costPerNight
类型为Float
closedForBookings
类型为Boolean
因此,我们应该最终得到一个看起来像这样的 Listing
类型:
请务必注意你的 Listing
类型中的每个 字段 的可空性!
"A particular intergalactic location available for booking"type Listing {id: ID!"The listing's title"title: String!"The number of beds available"numOfBeds: Int"The cost per night"costPerNight: Float"Indicates whether listing is closed for bookings (on hiatus)"closedForBookings: Boolean}
没有看到你想要的漂亮的 GraphQL 语法高亮显示?请查看 GraphQL:VS Code 的语法高亮扩展。
现在 Listing
类型已经完成,但我们需要一种方法来实际 请求 我们的 GraphQL 服务器 获取房源数据。为此,我们有一个单独的 Query
类型。
The Query
类型
The Query
类型定义方式与其他任何 对象类型 一样:
type Query {# Fields go here}
该类型的 字段 是我们架构的 入口点。这些是我们的客户端可以 查询 的顶级 字段。
现在,我们只对获取我们首页的特色房源列表感兴趣。让我们将 字段 命名为 featuredListings
,使其尽可能具有描述性。我们希望这个 字段 返回一个 Listing
列表。我们还会添加一个不错的描述:
type Query {"A curated array of listings to feature on the homepage"featuredListings: [Listing!]!}
我们的架构现在已完全定义,可以支持我们的第一个功能!
练习
Query
类型的陈述哪些是正确的?关键要点
- 我们使用
Query
类型来定义客户端可以 查询 的顶级 字段。这些字段是我们架构的入口点。
接下来
本课程的主题是构建一个 GraphQL 服务器,所以让我们开始吧!是时候认识一下 Apollo Server。
分享您关于本课的问题和评论
本课程目前处于
您需要一个 GitHub 帐户才能在下面发帖。没有? 请在我们的 Odyssey 论坛发帖。