超越自我
VMware 提供培训和认证,助您加速进步。
了解更多我谨代表团队和所有贡献者高兴地宣布,Spring for GraphQL 1.0.0-M5
现已从 https://repo.spring.io/milestone 获取。
M5 版本是继 12 月份功能丰富的 M4 版本 之后的快速跟进。M5 的主要目标是在本周四发布第一个 Spring Boot 2.7 里程碑之前,将 Boot starter 从 Spring GraphQL 仓库移到 Spring Boot 主仓库中。此外,一如既往地,我们收到了大量反馈,从而进行了许多改进和修复。
GraphQL starter 已从 Spring for GraphQL 项目仓库移至 Spring Boot 仓库,并将在即将发布的 2.7.0-M1 版本中提供。此处是 Spring Boot 文档中的GraphQL 部分。
为了简化体验,starter 现在也可在 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 requestId,这可以使日志消息与 Web 传输更容易关联起来。
然而,我们还进行了更改,使其更容易通过 WebInterceptor
自定义 ExecutionId
,并且现在还可以在 graphq.GraphQL
中配置您自己的 ExecutionIdProvider
,这将覆盖 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