领先一步
VMware 提供培训和认证,助您加速进步。
了解更多我谨代表团队以及所有做出贡献的人,很高兴地宣布 Spring for GraphQL 1.0.0-M5 已在 https://repo.spring.io/milestone 上发布。
M5 版本紧随 12 月发布的、功能丰富的 M4 版本之后。M5 的主要目标是将 Boot starter 从 Spring GraphQL 仓库移出,并纳入 Spring Boot 本身,以便在即将到来的本周四的第一个 Spring Boot 2.7 里程碑版本之前发布。除此之外,一如既往,我们收到了大量反馈,并据此进行了一些改进和修复。
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。
此版本改进了 Querydsl 和 Query by Example 的自动注册方式,用于 @GraphQlRepository 注解的 Spring Data 仓库。挑战的核心在于,自动注册应仅在没有为该字段注册 DataFetcher 时才适用,并且存在多种注册这些字段的方式,以及对其进行装饰的方式(如某些第三方库所做的那样),这可能会干扰自动注册。
在此里程碑版本中,我们已从使用 Schema TypeVisitor 切换到使用 WiringFactory 进行自动注册。这应该提供一种更稳定的机制,能够在各种场景下以及与其他库协同工作得更好。
如果您想了解更多关于 Querydsl 和 Query by Example 支持的信息,请查看 文档。
Spring for GraphQL 提供了 简单的 GraphiQL 集成;这个工具不仅在开发时用于构建查询和测试我们正在构建的 API,也是客户端开发者探索 API 的一个好方法。
虽然我们认为对于更具体的需求,应用程序应该构建自己的页面,但我们改进了默认体验,加入了 WebSocket 支持。您现在可以在 GraphiQL UI 中测试 WebSocket 上的 subscriptions!
更多 改进和修复已在此版本中完成,并且现已在 Spring Milestone 仓库中发布的 Spring for GraphQL 1.0.0-M5 版本中提供。
如果您有兴趣提供帮助,可以 开始使用 Spring GraphQL,并 在我们的 GitHub 项目上报告问题。如果您有疑问,请使用 spring-graphql 标签在 stackoverflow.com 上提问。
项目主页 | GitHub | 问题 | 文档 | Stack Overflow