如果我必须分解 REST 数据,然后重新聚合它,我是不是在滥用 GraphQL?
Posted
技术标签:
【中文标题】如果我必须分解 REST 数据,然后重新聚合它,我是不是在滥用 GraphQL?【英文标题】:Am I misusing GraphQL if I must decompose REST data, then re-aggregate it?如果我必须分解 REST 数据,然后重新聚合它,我是否在滥用 GraphQL? 【发布时间】:2018-08-01 16:04:36 【问题描述】:我们正在考虑在 REST 服务之上使用 GraphQL(使用 医疗记录的 FHIR 标准)。
我了解 GraphQL 的模式是聚合结果 多个独立的解析器进入最终结果。但是一个 符合 FHIR 的 REST 服务器提供已聚合的批处理端点 数据。有时我们需要点菜数据——患者的年龄或地址 仅,例如。但很多时候,我们需要大部分或全部数据 关于特定患者的可用信息。
因此,尽管我们可以从单个 REST 调用中获取此类全体数据 将多个关联编织在一起,看来我们需要 以 GraphQL 的方式分段获取它。
优化可以是预先加载和记忆所有相关的 任何解析器要求任何数据时的数据。在某些情况下,这将是 适当的,而在其他情况下,这将是严重的矫枉过正。但 考虑到什么时候这将是矫枉过正似乎是不可能的 解析器应该是独立的。此外,撤消似乎是血腥的 然后重做一些REST服务已经完美的事情 能够高效地工作。
所以——
-
当 GraphQL 位于 REST API 之上时,它是不是一个错误的工具?
有效地汇总数据?
如果在这种情况下 GraphQL 是正确的工具,它是急切加载和
相关数据的记忆合适吗?
如果急切加载和记忆化不是正确的解决方案,是否存在
一种利用 REST 服务能力的替代方法
汇总数据?
我的问题不同于 this 问题和 this 问题,因为两者都没有涉及如何利用另一个 服务聚合数据的能力。
【问题讨论】:
【参考方案1】:另一种方法是在解析器中解析特定查询的请求。传递给解析器的第四个参数是一个对象,其中包含有关请求的大量信息,包括选择集。然后,您可以根据请求的字段等待对 API 端点的批处理请求,最后返回 REST 调用的结果,并让较低级别的解析器处理将其解析为请求数据的形状。
解析 info 对象可以是 PITA,尽管有 libraries out there for that,至少在 Node 生态系统中是这样。
【讨论】:
以上是关于如果我必须分解 REST 数据,然后重新聚合它,我是不是在滥用 GraphQL?的主要内容,如果未能解决你的问题,请参考以下文章
如果我必须进行REST调用并将响应值与UI进行比较,那么步骤定义将如何构建?
在 Spark 结构化流中,我如何将完整的聚合输出到外部源,如 REST 服务