Spring for GraphQL 1.3 M1 发布

发布 | Rossen Stoyanchev | 2024年2月21日 | ...

我很高兴代表 Spring for GraphQL 团队宣布我们的第一个 1.3 里程碑的发布。该版本包含本文中描述的许多新功能。

同步 GraphQlClient

GraphQlClient 为通过任何传输(包括 HTTP、WebSocket 和 RSocket)进行 GraphQL 请求提供了一个通用工作流。随着 Java 21 中 Project Loom 的可用性,以及 Spring Framework 6.1 中新的同步 RestClient 的出现,我们现在增加了在阻塞堆栈上使用 GraphQlClient 并使用同步 API 的选项。有关如何使用基于 RestClient 的传输创建 GraphQlClient 的详细信息,请参阅参考文档

GraphQlClient 继续是阻塞和非阻塞传输上的通用 API,现在还提供同步或异步使用的选择。这意味着在构建时,您可以选择在阻塞或非阻塞传输上运行,在运行时,您可以保留同步或异步执行请求的选择。

DgsGraphQlClient

要执行 GraphQL 请求,您需要以文本、字符串字面量或从文档文件加载的形式提供 GraphQL 操作。或者,DGS Codegen 可以生成 Java 客户端 API 来定义请求。我们现在添加了一个新的 DgsGraphQlClient,可以轻松使用 DGS 代码生成的类。

DgsGraphQlClient 是任何 GraphQlClient 的轻量级包装器。它提供了一个专门的工作流来定义请求,但其余部分使用 GraphQlClient 来执行请求,并公开相同的 API 来处理响应。

有关详细信息,请参阅参考文档。此外,Spring Initializer 支持创建启用 DGS codegen 的 Spring GraphQL 项目。

SSE 支持

我们现在提供对基于 GraphQL over SSE 规范,使用 Spring MVC 和 WebFlux 处理通过 SSE 的 GraphQL 订阅请求的支持。有关详细信息,请参阅参考文档

在客户端,HttpGraphQlClient 现在支持通过 SSE 的 GraphQL 订阅。

Apollo Federation

当联合 GraphQL 服务启动时,它需要通过 federation-jvm 库初始化 GraphQLSchema,以添加对联合指令的支持,并处理对联合实体类型的请求。

我们现在提供 FederationSchemaFactory 来执行此配置步骤。该工厂检测 @EntityMapping 控制器方法,您可以使用这些方法加载联合实体类型。这些方法可以使用 @Argument 注释的方法参数来访问带有类型转换的实体 ID 值。它们可以同步或异步执行。它们还可以通过 @GraphQlExceptionHandler 方法将异常解析为 GraphQLError

有关详细信息,请参阅参考文档

其他

最后但同样重要的是,我们与 DGS 团队合作,为 Spring GraphQL 应用程序奠定了一个共同的基础。您可以阅读摘要了解这项工作。因此,DGS Framework 中正在完成一项新的集成,并且在 Spring for GraphQL 1.2.5 版本中进行了一些重要的更新,以实现该集成,造福所有 Spring for GraphQL 应用程序。我们感谢 DGS 团队,并期待我们继续合作!

请通过 https://repo.spring.io/milestone 试用 1.3 M1 版本,并在我们的问题跟踪器上向我们提供反馈!

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有