数据获取程序和解析程序之间的区别

时间:2019-06-12 05:08:08

标签: graphql graphql-java

我计划在我的Spring Boot应用程序中实现Graphql。我用Java搜索了许多站点来设置Graphql服务器,并遇到了两种实现方法。

一个正在实现如下所示的GraphQlResolver

 public class MyResolver implements GraphQLResolver<ModelX>

另一个是通过实现Datafetcher 参考:https://www.graphql-java.com

@Component
public class MyDataFetcher implements DataFetcher<ModelX> {


@Override
public ModelX get(DataFetchingEnvironment environment) {
    // TODO Auto-generated method stub

}

}

请提供一些有关两种方法之间的差异以及最佳方法的信息

2 个答案:

答案 0 :(得分:2)

DataFetcher来自graphql-java库,这是迄今为止我在Java世界中已知的唯一GraphQL Java实现。

GraphQLResolver来自另一个名为graphql-java-tools的库,该库建立在graphql-java的顶部。您可以认为它提供了一种允许您以更高级的方式构建GraphQL服务器的方法,或者可能会发现更方便的方法。最后,GraphQLResolver将以某种方式调用DataFetcher#get()来解析字段的值。

在Spring中类似的类比是graphql-java像Servlet,而graphql-java-toolsSpringMVC

答案 1 :(得分:0)

术语“解析器”是一个通用的 GraphQL 术语,与任何特定的 GraphQL 实现/框架/语言无关。 GraphQL 中的每个字段都由一个名为 resolver 的函数提供支持,该函数由 GraphQL 服务器开发人员提供。简而言之,解析器是将任何特定字段映射到任何特定响应的第一个逻辑命中。

Netflix DGS 库现已开源(截至 2020 年末),并引入了“DataFetchers”。在 DGS 世界中,DataFetcher 只是 DGS 特定的解析器实现方式。

阅读: