【问题标题】:Difference between Datafetchers and Resolvers数据提取器和解析器之间的区别
【发布时间】:2019-10-26 13:01:53
【问题描述】:

我计划在我的 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

}

}

请提供一些信息,说明这两种方法的差异和最佳方法

【问题讨论】:

    标签: graphql graphql-java


    【解决方案1】:

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

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

    Spring 中类似的类比是 graphql-java 喜欢 Servlet 而 graphql-java-tools 喜欢 SpringMVC

    【讨论】:

      【解决方案2】:

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

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

      阅读:

      【讨论】:

        猜你喜欢
        • 2012-05-11
        • 2018-04-20
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多