带有 Spring 的 GraphQL-java - 解析器 vd datafetcher

Mar*_*arx 2 spring-boot graphql graphql-java

GraphQL 和 Java (Spring) 一团糟。有多个项目,多个示例,但完全不一致。

我理解 Spring Boot 应该提供的是 OOTB 工作解决方案,并且(在某种程度上)它是这样工作的。为您提供此类体验的项目位于 Github https://github.com/graphql-java-kickstart 上。特别是https://github.com/graphql-java-kickstart/graphql-spring-boot让你可以创建模式,制作解析器,其他一切都是自动完成的。

问题是当您尝试用自定义 datafetcher 替换解析器(这看起来非常简单的 datafetcher)时。据我所知,不可能制作异步解析器或批量解析器 - 您必须制作 datafetcher。

要制作自定义数据提取器,需要进行自定义接线等,替换 spring-boot 解决方案,或以某种方式使用它(如何?)。没有一点是正确的,如何正确地做到这一点。我什至发现 BatchedDataFetcher 在它们获得良好的 Spring Boot 支持/示例之前已被弃用(!)(请参阅:GraphQL Java:使用 @Batched DataFetcher

正因为如此,我什至不知道去哪里寻找解决方案。我希望看到的是有一个例子,它有:

  • Spring Boot 支持
  • 异步/并行数据获取器
  • 批处理数据提取器
  • 使用 GraphQL 端点连接多个服务(可能超出范围)
  • 分页/过滤

Ken*_*han 5

无论如何,答案是:使用 graphql-java-kickstart 项目,因为来自https://www.graphql-java.com/ 的那些已经过时了。这个事实非常具有误导性,应该在某处说明。

并不真地。graphql-java只有GraphQLjava实现的,我知道这么远。它定义了DataFetcher. 它是核心库,而您发现的其他项目java-kickstart(例如(或更准确地说是它graphql-java-tool))是建立在 之上的graphql-java,它定义了自己的 实现,DataFetcher称为Resolver

到头来,这Resolver只是一个DataFetcher

您可以在这篇博文中找到有关这两个项目的更多相关信息。

因此,如果您想在构建 GraphQL 服务器时获得最大的灵活性,请使用graphql-java. 另一方面,如果您喜欢 使用的自以为是的方式graphql-java-tool,请使用它。