加入我们,于10月8日至10日在纽约市学习关于 GraphQL 联邦和 API 平台工程的最新技巧、趋势和新闻。加入我们,参加2024年纽约市GraphQL峰会
文档
免费开始

开始使用 Apollo iOS 代码生成


本简短教程将带您了解使用 Apollo iOS 生成 Swift 代码的基本概念。我们将向您介绍代码生成的核心功能,并通过使用 和 GraphQL 生成 Swift 代码的过程进行演示。

有关更多详细信息,请参见代码生成

步骤 1:项目设置

首先创建一个新的目录,并进入它

mkdir ios-code-gen-example
cd ios-code-gen-example

步骤 2:下载 GraphQL 模式

我们将使用本例中的 StarWars GraphQL API 进行示例。您可以使用 Apollo Studio 查看此模式。

Where to download a schema from Apollo Studio

在 Apollo Studio 的右侧找到下载模式的下拉菜单,如图中所示。Apollo Studio 支持两种模式下载。JSON原始 格式。在本教程中,请选择 原始 选项以下载 )格式的 模式。

点击 原始 将下载一个名为 [email protected] 的文件。

步骤 3:将下载的模式移动到您的项目中

将已下栽的文件 [email protected] 拖动或复制到您在 第一步 中创建的目录中。

将文件扩展名从 .graphql 改为 .graphqls。注意文件扩展名的 s 代表这是一个 GraphQL 模式文件。

步骤 4:创建一个 GraphQL 操作

您还需要创建一个 操作文件,因为代码生成引擎需要模式和至少一个操作才能生成代码。

我们将使用 所有电影查询操作 作为示例。点击此链接将以 Apollo Studio 中的资源管理器打开,您可以选择您想要提取的字段。或者,下面的 文本已经选择了字段。

将查询文本复制,并在 第一步 中创建的目录中创建一个名为 AllFilmsQuery.graphql 的新文件。将此查询粘贴到新文件中。

query Query {
allFilms {
films {
title
director
releaseDate
speciesConnection {
species {
name
classification
homeworld {
name
}
}
}
}
}
}

步骤 5:下载 CLI

在GitHub上浏览到 Apollo iOS版本列表,找到最新版本。在每次版本的资产列表中将会有一个先行编译好的命令行界面二进制文件称为 apollo-ios-cli.tar.gz

下载并解压此文件,然后将 apollo-ios-cli 二进制文件移动到你在 第1步 中创建的目录。

有关安装CLI的不同方式的信息,请参阅 codegen CLI 文档。

第6步:创建codegen配置

运行以下命令

./apollo-ios-cli init --schema-namespace StarWarsAPI --module-type swiftPackageManager

CLI 将创建一个名为 apollo-codegen-configuration.json 的配置文件,其中填写了默认值。文件应类似于以下内容:

{
"schemaNamespace": "StarWarsAPI",
"input": {
"operationSearchPaths": ["**/*.graphql"],
"schemaSearchPaths": ["**/*.graphqls"]
},
"output": {
"testMocks": {
"none": {}
},
"schemaTypes": {
"path": "./StarWarsAPI",
"moduleType": {
"swiftPackageManager": {}
}
},
"operations": {
"inSchemaModule": {}
}
}
}

第7步:生成代码

现在您可以生成一些代码了!运行以下命令

./apollo-ios-cli generate

您应该会在以下位置看到一个新文件创建:StarWarsAPI/Sources/Operations/Queries/Query.graphql.swift,该文件看起来类似于以下内容:

这样就这样!您也可以通过使用Apollo iOS客户端来审查所有其他生成的文件,以更深入地了解代码生成的工作原理。

上一页
v1.7
下一页
简介
评价文章评价在 GitHub 上编辑编辑论坛Discord

©2024Apollo Graph Inc.,商号 Apollo GraphQL。

隐私政策

公司