【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
- 【未验证】如果考虑 Apollo 自定义Header或者自定义 HTTPS 证书校验,可以看下 https://github.com/apollographql/apollo-ios/issues/37#issuecomment-389843281
【Graphql实践】使用 Apollo(iOS) 访问 Github 的 Graphql API的更多相关文章
- 朱晔的互联网架构实践心得S2E5:浅谈四种API设计风格(RPC、REST、GraphQL、服务端驱动)
Web API设计其实是一个挺重要的设计话题,许多公司都会有公司层面的Web API设计规范,几乎所有的项目在详细设计阶段都会进行API设计,项目开发后都会有一份API文档供测试和联调.本文尝试根据自 ...
- 【iOS 使用github上传代码】详解
[iOS 使用github上传代码]详解 一.github创建新工程 二.直接添加文件 三.通过https 和 SSH 操作两种方式上传工程 3.1https 和 SSH 的区别: 3.1.1.前者可 ...
- myeclipse eclipse 使用git插件访问github 的解决方案
具体的步骤很多帖子都有写,这里不再赘述,需要说明的一点,git插件的版本很重要,在官网上下载的最新版本在MyEclipse8.5,MyEclipse9.1,MyEclipse10上面都没有成功. 这里 ...
- OpenGL ES应用开发实践指南:iOS卷
<OpenGL ES应用开发实践指南:iOS卷> 基本信息 原书名:Learning OpenGL ES for iOS:A Hands-On Guide to Modern 3D Gra ...
- iOS 使用GitHub托管代码(github desktop使用)
iOS 使用GitHub托管代码 代码托管 1.首先得有一个GitHub的账号,没有的话就去https://github.com注册一个吧. 2.下载GitHub Mac客户端:http://mac. ...
- ios访问web页面<div>点击事件不起效果,以及alert()显示url的解决办法
ios访问web页面<div>点击不起效果,在其div上添加style=”cursor:pointer:“ jquery web页面动态append()事件调用方法:$(document) ...
- 使用jsdelivr访问github资源
一.新建github库并使用git上传 首先访问https://github.com 新建自己的库 之后使用 git 上传到github 下载git : https://git-for-windows ...
- go get 无反应、访问github.com速度慢、没反应问题的解决方案
go get 无反应.访问github.com速度慢.没反应问题的解决方案 昨天晚上装了个虚拟机,Centos7 安装都正常,网络访问也正常,但是打算安装beego的时候,把我给噎着了,无论是 ...
- windows下配置ssh访问github
一.说明 一直使用HTTPS的方式访问github的代码,用的时间长了,发现这是效率很低的一种开发行为,因为每次git push的时候都要输入username和password.今天就介绍如何在win ...
随机推荐
- js实现浏览器窗口缩放刷新
两行代码 $(window).resize(function () { location.reload(); })
- Python入门-迭代器
在说迭代器之前,首先来简单说一下函数名的运用以及闭包的概念和应用,有助于我们理解以后的知识. 一.函数名的运用 函数名是一个变量,但它是一个特殊的变量,与括号配合可以执行函数的变量. 1.函数名的内存 ...
- Jupyter 常用快捷键 及 常用方法笔记
两个不同的cell有上下的关系, 不是完全独立的, 下图可以看出下面的res是引用上面的 保存节点 就像虚拟机的快照与恢复 回到节点 保存文件 s(快捷键) 实际写 ...
- 服务器端渲染VS浏览器端渲染
1)浏览器渲染和服务器渲染区别:何为渲染?如果我们只是想显示一堆不变的数据,那么我们直接写一个a.html丢到服务器上让客户端访问就可以了.但这是基本不可能的事情,数据一般是变化的.你不可能为每套数据 ...
- 基础架构之Redis
项目开发过程中,有些信息的变动频率是很低但又经常访问到,这些信息我们往往放在缓存中,目前在缓存组件中,Redis绝对值得你列入使用计划.更多详细信息可以参考官网 https://redis.io/.这 ...
- JAVA语法基础要点
- Linux系统下安装Gitlab
Linux系统下安装Gitlab 一.简介 GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与 ...
- Oracle案例03——RMAN-06091: no channel allocated for maintenance (of an appropriate type)
同事收到告警磁盘空间不足,说删除归档无法直接在rman中进行操作,让帮看下,具体处理方法如下: 一.错误信息 在rman执行命令 crosscheck archivelog all; delete n ...
- Linux->ZooKeeper开机启动的俩种方式
两种方式可以实现开机自启动 第一种:直接修改/etc/rc.d/rc.local文件 在/etc/rc.d/rc.local文件中需要输入两行, 其中export JAVA_HOME=/usr/jav ...
- Win10安装msi程序报错2503和2502错误解决方案
刚升级了系统到win10,重新搭建开发环境,在安装scala的时候一直报2503.2502错误,如图 试了好几种办法都不好使,现在罗列依次用到的三种方法: 一.命令提示符(管理员)启动 "w ...