走在前沿
VMware 提供培训和认证,以加速您的进步。
了解更多我谨代表团队以及所有做出贡献的人员,高兴地宣布 Spring for GraphQL 1.0.0-M5
现已从 https://repo.spring.io/milestone 提供。
M5 版本是在功能丰富的 M4 版本(12 月发布)之后的一个快速后续版本。M5 的主要目标是在本周四第一个 Spring Boot 2.7 里程碑发布之前,将 Boot 启动器从 Spring GraphQL 存储库移到 Spring Boot 本身。除此之外,一如既往地,我们收到了大量的反馈,导致了许多改进和修复。
GraphQL 启动器已从 Spring for GraphQL 项目存储库移到 Spring Boot 存储库,并将从 即将发布的 2.7.0-M1 版本 中提供。这是 Spring Boot 文档中关于 GraphQL 的 部分。
为了简化体验,启动器现在也可以在 start.spring.io 上使用 - 尝试使用此链接创建您自己的 GraphQL 应用程序!
WebInterceptor
实例拦截通过 HTTP 或 WebSocket 的 GraphQL 请求。它允许获取有关 HTTP 请求或 WebSocket 握手的信息,并自定义 ExecutionInput
和 ExecutionResult
。
这对于 GraphQL 的常见用例很有用,例如
GraphQLContext
中。GraphQLContext
获取信息并公开 HTTP 响应头。在此版本中,从一开始就可用的 WebInput
和 WebOutput
类型已过审并进行了重构,以使其更易于使用。具体目标是确保轻松访问用于入站和出站拦截的 GraphQLContext
。因此,您现在可以执行以下操作
public class CustomHeaderWebInterceptor implements WebInterceptor {
@Override
public Mono<WebOutput> intercept(WebInput input, WebInterceptorChain chain) {
return chain.next(input).doOnNext(output -> {
GraphQLContext context = output.getExecutionInput().getGraphQLContext();
String value = context.get("...");
webOutput.getResponseHeaders().set("Custom-Header", value);
});
}
}
关于 Web 拦截,现在还可以更轻松地从 WebInterceptor
设置 GraphQL 请求的 ExecutionId
。
在 GraphQL Java 中,可以使用唯一的 ExecutionId
(默认为 UUID)标记每个请求。在 Spring for GraphQL 中,我们正在挂钩 Web 传输层 ID,例如 WebFlux 请求 ID,这可以更容易地将日志消息与 Web 传输相关联。
但是,我们也做了一些更改,以便通过 WebInterceptor
更轻松地自定义 ExecutionId
,并且现在还可以配置您自己的 ExecutionIdProvider
在 graphq.GraphQL
中,这将覆盖 Spring GraphQL 中使用的默认 ID。
此版本改进了如何为使用 @GraphQlRepository
注释的 Spring Data 存储库执行 Querydsl 和 Query by Example 的自动注册。挑战的根源在于自动注册应该只在没有为该字段注册 DataFetcher
且有多种方法来注册它们以及装饰它们时才应用,因为某些第三方库会这样做,并且这可能会干扰自动注册。
在此里程碑中,我们已从使用 Schema TypeVisitor
切换到使用 WiringFactory
进行自动注册。这应该提供一种在各种场景中以及与其他库一起更好地工作的更稳定的机制。
如果您想了解有关 Querydsl 和 Query by Example 支持的更多信息,请查看 文档。
Spring for GraphQL 附带 简单的 GraphiQL 集成;此工具不仅在开发时用于构建查询和测试我们正在构建的 API 很有用,而且也是客户端开发人员探索 API 的好方法。
虽然我们认为对于更具体的需要,应用程序应该构建自己的页面,但我们已经改进了默认体验以包含 WebSocket 支持。您现在可以在 GraphiQL UI 中测试订阅 WebSocket!
更多 改进和修复已进入此版本,它们现在可在 Spring Milestone 存储库中的新 Spring for GraphQL 1.0.0-M5 版本中使用。
如果您有兴趣提供帮助,您可以 开始使用 Spring GraphQL 并 在我们的 GitHub 项目上提出问题。如果您有任何一般问题,请在 stackoverflow.com 上使用 spring-graphql
标签 提问。
项目页面 | GitHub | 问题 | 文档 | Stack Overflow