如果我必须分解REST数据,然后重新聚合它,我是否误用了GraphQL?

时间:2018-02-21 22:34:26

标签: graphql

我们正在考虑在REST服务之上使用GraphQL(使用 FHIR医疗记录标准)。

我知道GraphQL的模式是聚合结果 多个独立解析器进入最终结果。但是一个 符合FHIR的REST服务器提供已聚合的批处理端点 数据。有时我们需要单点数据 - 患者的年龄或地址 仅举例来说。但很多时候,我们需要大部分或全部数据 关于特定患者的信息。

因此,虽然我们可以从单个REST调用中获取那种全体数据 将多个联想编织在一起,似乎我们需要 分段获取它以GraphQL的方式做事。

优化可能是急切加载和记忆所有相关的 任何解析器随时要求任何数据的数据。在某些情况下,这将是 适当而在其他情况下,这将是严重的矫枉过正。但 辨别何时它是否过度杀戮似乎是不可能的 解析器应该是独立的。此外,撤消似乎是血腥的 然后重做REST服务已经完美的东西 能够有效地工作。

所以 -

  1. 当GraphQL位于REST API之上时,它是错误的工具吗? 有效汇总数据?
  2. 如果GraphQL在这种情况下是正确的工具,那就是热切加载和 相关数据的记忆是否合适?
  3. 如果急切加载和记忆不是正确的解决方案,那么就存在 另一种利用REST服务能力的方法 汇总数据?
  4. 我的问题不同于 this 问题和 this 问题,因为既没有触及如何利用另一个 服务聚合数据的能力。

1 个答案:

答案 0 :(得分:1)

另一种方法是在解析器内解析特定查询的请求。传递给解析程序的第四个参数是一个对象,其中包含有关请求的大量信息,包括选择集。然后,您可以根据请求的字段等待批量请求到您的API端点,最后返回REST调用的结果,让您的低级解析器处理将其解析为请求数据的形状。

解析信息对象可以是PITA,尽管有libraries out there for that,至少在Node生态系统中。