我计划在我的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
}
}
请提供一些有关两种方法之间的差异以及最佳方法的信息
答案 0 :(得分:2)
DataFetcher
来自graphql-java
库,这是迄今为止我在Java世界中已知的唯一GraphQL
Java实现。
GraphQLResolver
来自另一个名为graphql-java-tools
的库,该库建立在graphql-java
的顶部。您可以认为它提供了一种允许您以更高级的方式构建GraphQL服务器的方法,或者可能会发现更方便的方法。最后,GraphQLResolver
将以某种方式调用DataFetcher#get()
来解析字段的值。
在Spring中类似的类比是graphql-java
像Servlet,而graphql-java-tools
像SpringMVC
。
答案 1 :(得分:0)
术语“解析器”是一个通用的 GraphQL 术语,与任何特定的 GraphQL 实现/框架/语言无关。 GraphQL 中的每个字段都由一个名为 resolver 的函数提供支持,该函数由 GraphQL 服务器开发人员提供。简而言之,解析器是将任何特定字段映射到任何特定响应的第一个逻辑命中。
Netflix DGS 库现已开源(截至 2020 年末),并引入了“DataFetchers”。在 DGS 世界中,DataFetcher 只是 DGS 特定的解析器实现方式。
阅读: