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

谢谢阅读!