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

最近在协助调研 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 调试工具

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

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

原文地址:https://www.cnblogs.com/ios122/p/9321681.html

时间: 2024-10-08 20:50:42

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

iOS访问相册及拍照保存的实现实例

iOS访问相册及拍照保存的实现实例 实现效果: 1.点击访问相册按钮,可以访问系统相册,选择以后返回在imageView中显示 2.点击拍照,访问摄像头,实现以后保存在相册中,返回在imageView中显示 注意:拍照功能需要真机调试,模拟器无法实现 模拟器会有如下效果~弹出警告框 工程下载:github工程下载链接 下面是程序:注意此例中两个button和UIimageView在storyboard中添加: ViewController.h @interface ViewController

访问Github慢的解决办法

http://blog.csdn.net/sunsteam/article/details/63253933 http://tool.chinaz.com/dns 151.101.40.249  github.global.ssl.fastly.net 151.101.40.133  assets-cdn.github.com vi /etc/hosts C:\Windows\System32\drivers\etc yum install -y nscd /etc/rc.d/init.d/ns

解决访问github时css、js样式加载不了

最近发现访问github时会时不时出现样式加载不了的问题 F12查看控制台信息,发现几个样式文件time-out,当然是GRW的杰作 DNS解析不了就只有自己连IP地址了,在http://serve.netsh.org/pub/ping-tool/中查看这两个域名的IP地址,更改本地hosts文件 ubuntu的hosts在/etc/hosts文件中 更改过后别忘了重启网络  sudo /etc/init.d/networking restart 再次访问github

iOS.访问 Web Service.MKNetworkKit_POST

#import <UIKit/UIKit.h> #import "T20140628025249NSNumber+Message.h" #import "T20140628025249NSString+URLEncoding.h" #import "MKNetworkEngine.h" #import "MKNetworkOperation.h" @interface T20140628025249ViewCont

iOS.访问 Web Service.同步GET请求方法

1.字符串转换为URL字符串NSString分类 #import <Foundation/Foundation.h> @interface NSString (URLEncoding) -(NSString *)URLEncodedString; -(NSString *)URLDecodedString; @end #import "T20140628013418NSString+URLEncoding.h" @implementation NSString (URLEn

Git代理设置与访问Github

由于目前工作的网络环境有着很严格的限制,可以说最近在通过代理访问Github上颇费了一些周折,也积累了一些相关的经验,觉得有必要备忘一下.本着"不重新发明轮子"的宗旨,本文不会对Github代理设置的每一个细节进行赘述,文中会给出现成的参考文章,这里要做的是针对一些重要的问题进行解释和补充,相信一定能给遇到同样问题朋友以帮助.本文原文出处:http://blog.csdn.net/bluishglc/article/details/37807501 严禁任何形式的转载,否则将委托CSD

Mac下修改hosts 解决访问github慢的问题

Mac下修改hosts 解决访问github慢的问题 mac下hosts文件在 /etc/hosts.所以先打开终端.然后输入如下命令,打开hosts文件. su vim /etc/hosts 输入mac管理员密码,就可以使用vim打开hosts文件.将如下github的host放到hosts文件中.在 vim 编辑中,按 "i"建进入插入模式,就可以将下面的 hosts 修改粘贴进入到hosts文件中. http://github.com 204.232.175.94 http://

iOS.访问通讯录.01.读取联系人信息

1.相关函数介绍 1.创建通讯录对象函数 ABAddressBookRef ABAddressBookCreateWithOptions( CFDictionaryRef options, CFErrorRef *error ); 例子: CFErrorRef error = NULL; ABAdressBookRef addressBook = ABAdressBookCreateWithOptions(NULL,&error); ABAddressBookRequestAccessWithC

iOS.访问 Web Service.异步GET请求方法

#import <UIKit/UIKit.h> #import "T20140628024750NSNumber+Message.h" #import "T20140628024750NSString+URLEncoding.h" @interface T20140628024750ViewController : UITableViewController<NSURLConnectionDelegate> @property (nonato