Tag: Apollo Client

适用于iOS应用的GraphQL

编写iOS应用的典型方法 大多数现代移动应用程序只是JSON的漂亮表示形式-新闻订阅源,实时比分,即时通讯程序等。 通常,应用程序执行对REST端点的请求,接收JSON响应,将其转换为模型对象,最后将其显示在屏幕上。 iOS开发人员已经对这种方法感到满意了几年,因此现在有许多库,API和技术可用来构建此类应用程序。 但是感觉应该有一些改进的空间。 让我们找出弱点并考虑更好的解决方案。 REST怎么了 当iOS开发人员开始使用基于网络的功能时,通常会为他们提供一个现有的服务器端点,并希望有详尽的文档。 如果API针对移动客户端进行了优化,这始终是个好消息,但通常它只是服务器模型的一种表示形式。 问题在于应用程序通常需要的数据集与端点提供的数据略有不同。 假设我们正在构建一个GitHub团队浏览器,我们需要显示团队成员姓名列表以及他们的仓库名称,但是只有一个端点可以返回团队成员的完整信息以及ID。回购。 当然,我们可以要求后端团队引入新的端点或特殊参数,以仅获取对象或字段的子集: GET / members / 1213?listPreview = true GET / membersAndRepos / 1213 但这不是一个好的解决方案,因为: 后端团队可能不可用; 实现,测试和记录更多端点需要花费时间; 应用需求可能会发生变化,因此这些添加将变得多余。 因此,自然必须发生的事情是在响应中下载不必要的数据并执行过多的请求。 如果客户端应用程序有一种很好的方法来指定所需的数据怎么办? 什么是GraphQL以及为什么很酷 GraphQL是使之成为可能的方法。 根据官方网站的说法,“ GraphQL是API的查询语言,并且是服务器端运行时,用于通过使用为数据定义的类型系统执行查询。 GraphQL不受任何特定数据库或存储引擎的束缚,而是由您现有的代码和数据支持。” GraphQL于2012年出生于Facebook。他们的移动团队正在研究新的提要,当时他们意识到现有技术远不适合移动应用程序-那时互联网连接速度很慢,因此优化查询将大大改善用户体验。 在内部成功之后,该团队于2015年开源了GraphQL。现在GraphQL是RFC规范,并且有多种语言的实现。 除了Facebook本身,一些大公司已经引入了GraphQL API:GitHub和Shopify。 顾名思义,GraphQL是图形的“查询语言”。 由于大多数现代应用程序内部的数据都可以表示为图形,因此GraphQL是一种便捷的解决方案。 关于GraphQL的最神奇的部分是它的简单流程: 描述您的数据。 询问您想要什么。 获得可预测的结果。 描述数据 每个GraphQL服务都有一个架构-服务器上可用数据的蓝图。 强大的类型是GraphQL模式特别酷的地方。 此外, schema.json文件的作用类似于服务器的文档。 继续我们的repos示例,我们可以有一个这样的模式: 输入用户{ 名称:字符串! avatarUrl:字符串 贡献的资料库:[资料库]! […]