与我们一起于10月8日至10日参加纽约市的会议,了解有关GraphQL Federation和API平台工程的最新技巧、趋势和新闻。加入我们,参加2024年纽约市GraphQL峰会
文档
免费开始
您正在查看该软件以前版本的文档。 切换到最新稳定版本。

3. 编写您的第一个查询


最常用的操作查询,它以符合您的服务器模式的结构从您的请求数据。Sandbox,您可以看到打开的Schema参考标签中可用的查询。

向下滚动到launches 以获取细节:

Detail about launches query

这里,您可以同时看到查询项本身、返回类型以及可以传递给查询的参数信息。您可以使用这些信息编写您最终将添加到您的应用程序中的查询。

要在沙盒资源管理器中开始使用此查询,请选择信息右侧的“播放”按钮:

Open in Explorer

这会将您带回到沙盒的资源管理器标签页,左侧侧边栏将显示所选查询的文档:

Docs open in the left sidebar

请注意启动图标旁边的小按钮。单击此按钮将查询添加到中间的《》面板:

Click the button to add this query

查询添加后,将呈现如下:

The query once it's been added to the Operations section

让我们分析一下这里您所看到的

  • 操作类型为查询,其后跟随操作名称,目前为Query(我们将在稍后使其更具体),这是最外层的括号集。
  • 实际被调用的查询是下一组内部的括号。由于此查询的参数都具有默认值,它们不会被自动添加到查询中。
  • 在括号之间的空白区域存在错误,这就是您将放置返回的每个启动所需要的信息列表的位置。

尽管Apollo Kotlin SDK不要求每个查询都必须有名字(即使GraphQL规范没有要求这样做),但您打算创建多个查询,因此最好也为此操作指定一个不同于Query的具体名称。将操作名称更改为LaunchList

Renaming the query

接下来,在左侧,您可以选择您想要在返回对象中回显的字段。首先,点击位于游标旁边的按钮。它将标记该字段为已选,然后将它插入到您的操作中:

After adding the cursor field.

这可能是在对象中添加字段的最简单方法,因为它知道一切如何拼写以及在什么类型。

但是,您也可以使用自动完成功能来帮助您完成。在《》面板中在游标下面添加新行并开始输入ha。一个自动完成框会出现,并基于模式显示选项:

Example of autocomplete

沙盒资源管理器是一个用于构建和验证查询的出色工具,这样您就不必在Android Studio中反复重新构建项目以测试更改。

正如架构图所示,执行 launches 查询将返回一个 LaunchConnection 对象。此对象包含一个 列表,以及与分页相关的 字段(cursorhasMore)。您迄今为止编写的查询明确指定了要返回此 LaunchConnection 对象的哪些 字段。

按下“提交 ”按钮运行这个 LaunchList:

Submit the operation

您将很快在页面右侧看到查询返回的结果作为一个 JSON 对象:

Query JSON in Sandbox Explorer

查询 执行成功,但未包含任何关于 launches 的信息!这是因为我们没有在查询中包含必要的 字段。

单击左侧列底部 launches 字段旁边的按钮。它将为 launches 添加一组在大括号中的操作,并随后将文档移动以显示关于 Launch 类型的信息:

Status after adding launches field

在此组大括号中添加的字段将用于获取列表中每个 launch 的信息。单击 idsite 属性旁边的按钮以添加这两个 字段。完成之后,您的 operation 应该看起来像这样:

(沙箱探索器)
query LaunchList {
launches {
launches {
id
site
}
}
}

再次运行操作,现在您将看到除了之前返回的信息外,还得到了包含其 ID 和站点信息的 launches 列表:

Updated query JSON in Sandbox Explorer

将查询添加到您的项目中

现在您的 查询 正在获取正确的数据,请回到 Android Studio。

  1. 右键点击 src/main/graphql/ 文件夹。这个文件夹应该包含您的 schema.graphqls。选择 新建 > 文件:
New GraphQL file
  1. 将文件命名为 LaunchList.graphql。确保它和您的 schema.graphqls 文件在同一级别保存。

  2. 将您的最终 查询 从沙箱浏览器复制并粘贴到 LaunchList.graphql 中。

app/src/main/graphql/LaunchList.graphql
query LaunchList {
launches {
launches {
id
site
}
}
}

生成模型

构建您的项目以让 Apollo Kotlin 插件生成您的第一个模型。该插件定义了一个名为 generateApolloSources 的任务来生成模型。您不需要运行它。在构建项目时,它会自动执行。

注意:直到您构建项目,自动补全功能不会工作。这是因为自动补全需要生成的代码来工作。每次您更改查询时,都应重新构建您的项目,以便 Android Studio 能够拾取修改。

检查生成的代码

从菜单中选择 导航 > 类 并开始输入 LaunchList,Android Studio 应建议打开 LaunchListQuery.kt。该文件应在 app/build/generated/source/apollo/service/com/example/rocketreserver/LaunchListQuery.kt

LaunchListQuery.kt 文件定义了一个根类,LaunchListQuery,带有许多嵌套类。如果您将这些类与沙箱浏览器返回的 JSON 数据进行比较,您会看到它们的结构匹配。这些类只包括您在 查询 中请求的 属性

尝试注释掉 id 属性在 LaunchList.graphql 中,保存后再次构建。当构建完成时,Launch 类现在只包含请求的 site 属性。

取消注释 id 并重新构建以恢复该属性。

现在您已生成了代码并且有机会查看其中的内容,是时候 执行查询

上一页
2. 添加 GraphQL 架构
下一页
4. 执行您的第一个查询
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即Apollo GraphQL。

隐私政策

公司