前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Graphql实践】使用 Apollo(iOS) 访问 Github 的 Graphql API

【Graphql实践】使用 Apollo(iOS) 访问 Github 的 Graphql API

作者头像
ios122
发布2018-07-31 16:16:40
1.4K0
发布2018-07-31 16:16:40
举报
文章被收录于专栏:iOS122-移动混合开发研究院

最近在协助调研 Apollo 生成的代码是否有可能跨 Query 共享模型的问题,虽然初步结论是不能,并不是预期的结果,但是在调研过程中积累的一些经验,有必要记录下。如果你也对 Graphql 感兴趣,不妨先从 Github 的 Graphql API 来切手实践。

关于 Graphql 官网

尽管只是做客户端的一些实践,我还是建议你先过一遍 Graphql 官网的学习指南。这样能更快速地理解概念。一些客户端库的文档,大部分都只是介绍基本用法。

中文版,可以直接看 http://graphql.cn/

制作访问 Github API 的 Token

Github 中有多个 Token 的概念,你需要的是在 https://github.com/settings/tokens 这个页面。初步接触 Github API 的童鞋,可能会走好多弯路,比如把 Github APP 的token生成规则当成了 API 的访问 Token,几经周折生成出来,却发现完全不好使。

代码语言:javascript
复制
curl -H "Authorization: bearer 7b7cc672235587292be65d11d8ae729b14a0d162" https://api.github.com/graphql

其中的 7b7cc672235587292be65d11d8ae729b14a0d162 是我自己生成的几乎没有私人权限的 Token,可以临时提供给大家快速上手。但是不保证其一直可用,所以还是建议大家自己去新建一个自己的专属 Toekn。

配置 graphiql -- graphql 调试工具

这个地方,也是各种坑。第一反应就是去看官方文档,但是文档过时太多,坑太深。如果你非要看的话,我友情提醒一句,需要在父目录执行的是

代码语言:javascript
复制
yarn && npm run build

或者你干脆自己新建一个自己的示例:

代码语言:javascript
复制
yarn add graphiql
yarn add graphql

如果看不懂我上面在说什么,说明你很可能不是一个 Web 前端,那就直接用一个基于 graphiql 开发的 APP 吧:

https://github.com/skevy/graphiql-app。Github 甚至还有专门的使用该 App 访问 Github API 的教程:https://developer.github.com/v4/guides/using-the-explorer/

注意: 这个 App 是基于 Electron 开发的,作者没有直接提及对 Windows 的支持,但是如果你确实有需要,自己看下 Electron 的编译教程,肯定是可以搞定的。

以可视化方式查看 Github API

想象下,Graphql 把数据当做一个具体的图来处理,那这个图真的画出来是什么样呢?本来想自己用 Web 画下效果的,但是竟然发现网上已经有了相关的工具。

完整的工具库,见https://github.com/APIs-guru/graphql-voyager。如果能和上文的 graphiql 的 App 聚合在一起,就非常完美了。

如果直接向看下效果,可以直接访问在线Demo: https://apis.guru/graphql-voyager/。里面提供了几个实例。Github 的 API 看起来,似乎也不是很复杂嘛~~

关于 Apollo iOS 库

文档肯定是要要先看下的:https://www.apollographql.com/docs/ios/。但是其中的坑,还是有几个,记录下,或许能帮助后来的童鞋:

  • iOS 兼容性是 iOS 9.0。如果你的项目指定最低版本为 8.0,会发现 pod 安装的总是旧版 Apollo 库。
  • 如果找不到最新的库,可能需要更新下 pod:
代码语言:javascript
复制
pod install --repo-update
  • 写到 Xcode 里那段脚本,是不正确的。官网文档没有及时更新,应该下面这样写:
代码语言:javascript
复制
APOLLO_FRAMEWORK_PATH="$(eval find $FRAMEWORK_SEARCH_PATHS -name "Apollo.framework" -maxdepth 1)"

if [ -z "$APOLLO_FRAMEWORK_PATH" ]; then
echo "error: Couldn't find Apollo.framework in FRAMEWORK_SEARCH_PATHS; make sure to add the framework to your project."
exit 1
fi

cd "${SRCROOT}/${TARGET_NAME}"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-codegen.sh generate "$(find . -name '*.graphql')" --schema=schema.json --output API.swift
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于 Graphql 官网
  • 制作访问 Github API 的 Token
  • 配置 graphiql -- graphql 调试工具
  • 以可视化方式查看 Github API
  • 关于 Apollo iOS 库
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档