最近在协助调研 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, 几经周折生成出来, 却发现完全不好使.
curl -H "Authorization: bearer 7b7cc672235587292be65d11d8ae729b14a0d162" https://api.github.com/graphql
其中的 7b7cc672235587292be65d11d8ae729b14a0d162 是我自己生成的几乎没有私人权限的 Token, 可以临时提供给大家快速上手. 但是不保证其一直可用, 所以还是建议大家自己去新建一个自己的专属 Toekn.
配置 graphiql -- graphql 调试工具
这个地方, 也是各种坑. 第一反应就是去看官方文档 https://github.com/graphql/graphiql/tree/master/example , 但是文档过时太多, 坑太深. 如果你非要看的话, 我友情提醒一句, 需要在父目录执行的是
yarn && npm run build
或者你干脆自己新建一个自己的示例:
- 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:
pod install --repo-update
写到 Xcode 里那段脚本, 是不正确的. 官网文档没有及时更新, 应该下面这样写:
- 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
[未验证] 如果考虑 Apollo 自定义 Header 或者自定义 HTTPS 证书校验, 可以看下 https://github.com/apollographql/apollo-ios/issues/37#issuecomment-389843281
来源: https://www.cnblogs.com/ios122/p/9321681.html