iOS中的GraphQL —第2部分:在iOS中使用GraphQL
重命名该新脚本以生成Apollo GraphQL API。 将以下代码片段复制到外壳程序:
APOLLO_FRAMEWORK_PATH =“ $(分别找到$ FRAMEWORK_SEARCH_PATHS -name” Apollo.framework“ -maxdepth 1)”
如果[-z“ $ APOLLO_FRAMEWORK_PATH”]; 然后
echo“错误:在FRAMEWORK_SEARCH_PATHS中找不到Apollo.framework;请确保将框架添加到您的项目中。”
1号出口
科幻
cd“ $ {SRCROOT} / $ {TARGET_NAME}”
$ APOLLO_FRAMEWORK_PATH / check-and-run-apollo-codegen.sh生成$(find。-name'* .graphql')--schema schema.json --output API.swift
生成项目以完成安装。
3.添加架构文件:
接下来,您需要将GraphQL服务器的架构文件添加到项目中。 转到Graph.cool仪表板以获取端点链接。 这是格式为https://api.graph.cool/simple/v1/xxx的链接。 打开终端并输入以下内容:
阿波罗代码生成下载模式SIMPLE_API_ENDPOINT-输出schema.json
这会将文件名schema.json下载到您的计算机。 将此文件添加到Xcode项目的根目录。
现在让我们编码。
打开AppDelegate并将其添加到顶部
请忽略此愚蠢的UI,因为这只是一个小演示。
现在从GraphQL开始。 我们将创建一个扩展名为.graphql的文件,以保留所有GraphQL命令。
第一次运行apollo- codegen时 , 它将在项目的根文件夹中创建一个名为API.swift的文件。 尽管此文件已经在您的文件夹中,但是您仍然需要将其添加到项目中。 注意:请记住取消选中“ 复制项目”选项( 如果需要)。
接下来,我们将尝试使用查询信息。 将此代码粘贴到您的graphql文件中:
这是用于创建新数据的UI。 打开graphql文件并输入以下代码:
生成项目以将代码生成到API.swift文件中。 打开ViewController,添加此代码以创建新的女孩信息。
但是,您可能会遇到一个问题,即成功执行变异后,应用程序上的数据不会更改。 您转到Graph.cool仪表板,看到数据已经更改,但是应用程序中的查询仍然与以前相同。 这是因为Apollo框架已在本地缓存数据,因此如果您执行相同的查询,则不会受到影响。 若要解决此问题,请通过传递cachePolicy: apollo.fetch(query:girlDetailsQuery,cachePolicy:.fetchIgnoringCacheData)来更改查询代码。
有关更新信息,请添加更新突变:
调用更新与创建相同。
这是有关GraphQL以及如何集成到iOS应用程序的一些基本信息的完成。 您可能会说GraphQL可能是未来,它将很快取代REST。 我对此不确定,但是这两件事完全不同。 REST是一种体系结构,而GraphQL是一种查询语言。 如果您想进一步了解REST和GraphQL之间的区别,请查看以下文章:https://philsturgeon.uk/api/2017/01/24/graphql-vs-rest-overview/。
我的示例项目在这里:https://github.com/dzungnguyen1993/GraphQLExample
谢谢阅读!