Swift接入Apollo GraphQL并使用CLI生成代码
✏️ 笔者是GraphQL深度爱好者,在学习Swift开发过程中也希望能够将其引入,过程中也遇到一些包管理问题,参阅了官网文档后成功接入,下面是整个过程。
设备信息: Xcode版本:Version 14.3.1 (14E300c) Mac OS :13.4
开始
安装Apollo IOS Client
这里包管理使用了**SPM(Swift Package Manager)**,之前使用Cocoapods,没能正常跑起来,而且感觉这种方式对项目的侵入性比较强,开发体验不好。
在Xcode中,File→Add Packages,然后填入https://github.com/apollographql/apollo-ios
按需选择你需要的库,比如你想用到WebSocket就可以一起加入
安装CLI工具
我们需要用apollo-ios-cli来下载GraphQL的Schema,并且用他来来生成业务所需要的查询代码。
在项目根目录上右键,选择Install CLI。
此时,项目中已经接入了Apollo Client,不过为了更方便业务使用,我们还需要讲我们自己的查询语句生成更易使用的Swift代码。
代码生成
下载GraphQL Schem
下载我们GraphQL Server的GraphQL,可以使用CLI去生成这份文件,这里推荐直接复制下面的文件,然后自己在Xcode里面创建apollo-codegen-config.json并粘贴。
需要注意几个点:
- operationSearchPaths 这里说的是你需要需要查询的GraphQL DSL
- schemaSearchPaths 你的GraphQL所有的DSL描述
- endpointURL GraphQL Server地址
- schemaTypes.path CLI生成Swift的代码目录
- outputPath 下载后的文件放在哪里,这里推荐放在项目目录下的./graphql
文件配置好之后,在终端进入项目根目录,执行下面代码
执行后,你的项目目录会多出一个目录,里面包含你GraphQL Server提供的DSL
编写业务gql查询语句
这这里我随便写了一个查询语句,这里的目的主要是让CLI根据查询语句生成对应的Swift的查询对象,下面这段语句最后会生成public class GetPromptQuery: GraphQLQuery 等等,可以继续往下看
生成对应定义
编写完就运行下面代码
将生成的代码加入Swift 项目
同样在刚才 File→Add Packages 选择本地包
选择刚才生成的
链接二进制包
我在初次调试的时候一直提示我Cannot find 'GetPromptQuery' in scope
是因为没有将Apollo生成的代码加入项目。
此时,项目就已经接入了CLI生成业务代码,可以直接在Swift文件中使用。
下一篇文章我们讲如何将请求与我们的UI结合起来。
参考
© 2024 ABFree Co. All rights reserved.