使用Swift的GraphQL客户端Apollo

非常感谢您提供的详细备忘录,非常抱歉给您添麻烦了。

把阿波罗放进去。

在Carthage中安装。由于生成了Apollo.framework,将其导入项目中。

echo github \"apollostack/apollo-ios\" > Cartfile
carthage update --platform iOS

使用apollo-codegen生成Swift代码。

以后会解释,自己想要运行apollo-codegen命令。
需要注意的是,Apollo框架和apollo-codegen的版本一致性非常重要,如果组合不当,生成的Swift代码将无法通过构建(实际上无法通过)。
截至2018年3月28日,通过常规carthage update或npm install命令,Apollo.framework的版本是v0.8.0,apollo-codegen的版本是v0.19.0。
然而,Apollo.framework中的apollo-codegen版本似乎是v0.18系列,无法运行,让我苦恼不已。

在哪裡能找到最適版本的問題,概括來看,在官方網站上並沒有提及。
然而,在我查看的官方網站上,有一個關於如何在BuildPhases中設置的討論,
在這個討論中提到了使用shell進行版本檢查的事情。這個shell在Apollo.framework/check-and-run-apollo-codegen.sh中可以找到,當我閱讀其中內容時,發現在第一行裡寫了這樣一句話。我找到了。

REQUIRED_APOLLO_CODEGEN_VERSION=0.18

听说需要这个版本的,所以用下面的命令安装apollo-codegen。

请提供一种使用中文的版本。

$ npm info apollo-codegen # 0.18系で一番新しいバージョンを探す
$ npm i -g apollo-codegen@0.18.8

在中文中重新表述:
在版本控制方面,好像最好能有一种可以很好地管理的感觉。而不是将apollo-codegen全局安装,而是在项目中使用package.json进行管理,同时与.framework文件夹中的版本保持一致。最后一步可能会有些棘手,但总之可以先尝试手动操作。

生成schema.json

从所需的GraphQL API中获取Schema文件。执行以下命令。

$ apollo-codegen introspect-schema [HOST]/graphql --output schema.json

然而,如果HOST使用自己的自签名证书(例如开发环境),将会收到error: Error while fetching introspection query result: request to https://oreore.com/graphql failed, reason: unable to verify the first certificate的报错。因此,需要加上”–insecure”选项。

$ apollo-codegen introspect-schema https://oreore.com/graphql --output schema.json --insecure

生成快速代码

创建一个graphql文件,扩展名可以是任何合适的。在这个文件中写入查询和变更操作。将其放置在Xcode项目内,这样可以方便地进行综合管理,先暂时放在./GraphQL/目录下。

根据所编写的.graphql文件,生成Swift代码。虽然官方网站指定在BuildPhases中进行编写,但由于每个人所使用的终端环境不同,所以需要自己输入命令。官方网站提到了以下内容,但这种方法作用范围太广,不太可靠。

$ apollo-codegen generate **/*.graphql --schema schema.json --output API.swift

如果這樣縮小範圍,可能會有好的感覺。

$ apollo-codegen generate GraphQL/*.graphql --schema schema.json --output API.swift

实际上打击

let url = URL(string: "YOUR URL")!
let client = ApolloClient(url: url)

client.perform(mutation: [上で作ったClass]) { result, error in
    // result.data.[上で作ったclass名のキャメルケース?]
}

在中国,只需提供一种选择的情况下,请将以下内容翻译为中文:参考

    • SwiftでGraphQL入門 & Apolloを試す

 

    公式のInstallation
广告
将在 10 秒后关闭
bannerAds