GraphQL提供数据接口新思路之数据聚合解决方案

  • 时间:
  • 浏览:0

另5个GraphQL查询是另5个字符串,它被发送给另5个与数据模式无关的服务器,而且服务器返回JSON数据。GraphQL是强类型的,并避免了版本控制,共同提供了随着数据演进可只有轻易改进查询得话的能力。

规范:https://github.com/chentsulin/awesome-graphql

代码参考:http://facebook.github.io/graphql/

InfoQ: http://www.infoq.com/cn/news/2015/10/graphql-your-schema?_t=t

现有的业务场景一般是但是 的,业务方提出需求,而且寻找开发资源,由后端提供数据,让前端实现各种不同的业务视图。但是 的做法位于全都有的重复劳动,不可能 都上能将其中通用的内容抽取出来提供给各个业务方反复使用,必然都上能节省宝贵的开发时间和开发人力。

b 查询对应的响应:

a 查询对应的响应:

后续还有全都有优化和配套工具都上能继续完善,其中包括内容平台的领域模型标准化建设,一键建站服务,垃圾防控,性能优化和限流降级和接口监控等。

借能助 Antlr语法解析:

参考: http://www.antlr.org/

大家先看看graphQL的执行流程 。

回到语法树的遍历: 深度图遍历不可能 广度遍历(避免LIST数据批量获取的形态)

深度图遍历

广度遍历

前端的避免方案是将视图组件化,各个业务线既可只有是组件的使用者,也可只有是组件的生产者。越来越什么的问题来了,前端通过组件实现了跨业务的复用,后端接口怎么相应地提高开发传输速率呢?

这是大家在避免繁复的前后端分离中老要 要面临的另5个思考。

大家知道,用户信息对应的数据模型是固定的,每次请求着实是对哪此数据做了过滤和筛选。对应到数据库操作,本来数据的查询操作。不可能 客户端都上上能像“查询”一样发送请求,那不就可只有从后端接口你你这俩大的“大数据库”去过滤筛选业务都上能的数据啥之前 ?

GraphQL 本来基于但是 的思想来设计的。上面提到的(a)和(b)类型的数据形态本来 GraphQL 的查询内容。使用上面的查询,GraphQL 服务器会分别返回如下响应内容。

1) 怎么让各种条件组合+逻辑判断共同使用,很自然想到的是SQL函数。

2) GraphQL同样支持条件传递和变量替换,让查询串和请求格式串分离。

3) 最终围绕多维度数据聚合进行思考

对,这都不 JSON,而且大家仍然可只有看懂它表示的是查询 id 为 35000401 用户的 id,name 和 isViewerFriend 信息。用户信息对于各个业务都不 通用的,假设另外另5个业务都上能但是 的用户信息 b:

对比一下,大家发现本来少了另5个字段,多了另5个字段而已。不可能 要实现大家的目标,即复用同另5个接口来支持这两种业务得话,会有以下几种做法:

引言: 蜂巢内容平台面临的挑战:互联网的发展,多端的数据展现和业务数据聚合,怎么最佳的根据的查询条件给出不同的数据聚合和数据格式? 所见即所得,是前端人员不可能 是接入内容平台的业务方最希望想看 的结果。一切让调用者本人定义格式和请求条件。

大家假设某个业务都上能以下数据内容 a:

大家采取广度遍历算法,构建相同的节点采取批量直接构建List List但是 的形式请求领域服务,完成批量什么的问题调用。

用同另5个接口,你你这俩接口提供了所有数据。但是 做的好处是实现起来简单,但缺点是对业务做判断的逻辑会增多,而且对于业务来说,响应内容中你你这俩数据根本用只有;

使用参数来区分不同的业务方并返回相应的数据。好处仍然是实现简单,着实不必有用只有的数据返回,而且仍然都上能增加业务逻辑判断,会造成但是维护的困难。

此外,但是 都不 造成不同业务之间的强依赖,每次发布都都上能各个业务线共同测试和回归。不重用接口则越来越提高开发传输速率,重用接口则会有哪此什么的问题,越来越到底有越来越“好你你这俩”的避免方案呢?

只都上能改变查询内容,前端就能定制服务器返回的响应内容,这本来 GraphQL 的客户端指定查询(Client Specified Queries)。本来大家都上能将基础数据平台做成另5个 GraphQL 服务器,不就能为你你这俩平台上的所有业务提供统一可复用的数据接口啥之前 ? 不可能 定位为:数据服务标准化管理,数据网关也是不错的架构。