3. 编写第一个查询
最常用的 GraphQL 操作 是 查询,它从您的 图请求数据,数据的结构符合您的服务器架构。如果您回到 沙箱,可以看到您早期打开的模式参考标签中的可用查询。
向下滚动到launches
字段 以获取其详细信息:
在这里,您可以看到 查询 术语本身、返回类型以及可以传递给查询的参数信息。您可以使用这些信息编写您最终要将查询添加到您的应用程序中的查询。
要在沙箱资源管理器中开始使用此 query,请选择信息右侧的“播放”按钮:
这将使您返回到沙箱的“资源管理器”选项卡,左侧边栏显示您选择的 query 的文档:
注意 launches
图标旁边的按钮。点击此按钮将 query 添加到中间的 "operations" 面板:
当 query 添加后,它将看起来像这样:
让我们来看看这里能看到的内容
- 操作的类型,
查询
,Query
(我们将在稍后使其更加具体),是外层括号集。 - 下一组括号包含'查询'的
选择集
。在GraphQL中,选择集
是指你希望获取的字段'列表。由于此查询'的'参数'都有默认值,因此它们不会自动添加到查询中。 - 括号之间空白区域的错误,你需要在此处放置包含每个发起所需信息的列表。
Apollo iOS SDK要求每个查询都有一个名称(尽管GraphQL规范不要求)。由于你将创建不止一个查询,因此给它一个比Query
更具体的名称也是个好主意。将操作的名称更改为LaunchList
:
接下来,在左侧,你可以选择你希望返回对象中的哪些'字段'。首先点击 рядом с полем cursor
。这将标记该字段为选中状态,并将其插入到你的操作中:
这可能是在对象中添加字段的 easiest 方法,因为它知道所有things的名称和类型。
然而,你还可以使用自动完成来帮助你完成这个任务。在操作'面板中在cursor
下添加换行符,然后开始输入ha
。将显示一个自动完成框,并列出基于模式中的选项:
沙盒探索程序是一个在不需要反复在Xcode中重新构建项目以测试更改的情况下构建和验证查询的极好工具。
正如模式所示,launches
查询返回一个LaunchConnection
对象。此对象包含一个包含与分页(cursor
和相关字段。的hasMore
)的launches列表。你迄今为止编写的查询明确指出了你希望从该LaunchConnection
对象返回哪些字段。
通过按下“提交查询”按钮来运行此查询,该按钮现在应具有你查询的名称,LaunchList
:
您会发现,查询的结果将以JSON对象的形式显示在页面右侧:
此查询执行成功,但没有包含任何关于发射
的信息!这是因为我们没有在查询中包括必要的字段。
发射字段位于左侧列的底部,点击其旁边的按钮。它会为发射
添加一组花括号到操作部分,然后移动文档显示关于发射
类型的
您在此組括号中添加的字段将用于检索列表中的每一个发射的信息。点击id
和site
属性旁边的按钮来添加这两个字段。完成後,您的操作应如下所示:
query LaunchList {launches {cursorhasMorelaunches {idsite}}}
再次运行操作,您现在会看到除了之前得到的信息外,还有关于发射的列表及其ID和站点信息:
将查询添加到Xcode中
现在您的查询已正确检索数据,是时候将它添加到Xcode中了。
- 在项目层次结构中,右击graph文件夹,并选择新建文件...
- 选择空白文件模板,并点击下一步
- 将文件命名为
LaunchList.graphql
,确保该文件被添加到包含您的schema.graphqls
文件所在的graph
文件夹。最后,请确保该文件不会被添加到应用目标,然后点击创建
- 通过在沙盒探索器中选中操作名称旁边的三个点(即“肉球”)菜单并选择“复制操作”来复制您的最终操作:
- 将复制的操作粘贴到
LaunchList.graphql
文件中。您的查询文件现在应该看起来像这样:
query LaunchList {launches {cursorhasMorelaunches {idsite}}}
现在您有一个可用的查询,在下一步中,您将通过graphql生成代码。运行代码生成。