Spring GraphQL 1.0.0-M4 已发布

版本发布 | Brian Clozel | 2021 年 12 月 14 日 | ...

Spring GraphQL 团队刚刚发布了 1.0.0 版本发布的第 4 个里程碑。感谢所有贡献者!

在此里程碑中,我们进一步改进了注解编程模型,并扩展了在之前的里程碑中提供的 Spring Data 支持。

GraphQL 参数的接口投影

如果您熟悉 Spring Data 的接口式投影,那么这项新功能对您来说将非常有意义:您可以使用一个定义良好的接口来处理 GraphQL 参数,而无需任何对象实现。

例如

@Controller
public class BookController {

    @MutationMapping
    public Book addBook(@Argument BookInputProjection bookInput) {
        // ...
    }
}

@ProjectedPayload
interface BookInputProjection {

    String getName();  // this maps to "name" argument

    @Value("#{target.author + ' ' + target.name})
    String getAuthorAndName();
}

您可以在文档的@ProjectedPayload 接口部分了解更多关于此功能的信息。

按示例查询支持

Spring GraphQL 现在支持使用按示例查询(Query by Example)的 Spring Data 扩展来进行数据获取。要使用此扩展,您无需通过特定于存储的查询语言编写查询,只需提供一个填充了字段的领域对象的示例即可。存储库实现将完成其余的工作!

QueryByExampleDataFetcher 可以轻松创建 DataFetcher,它将 GraphQL 参数绑定到示例对象,然后使用该对象进行数据查询。还有一个功能是基于 @GraphQlRepository 注解自动发现按示例查询的存储库,并将其映射到顶级 GraphQL 查询。

如果您的首选数据存储支持此功能,那么您可以为 Spring GraphQL 应用程序提供另一种利用 Spring Data 存储库的方式。有关更多详细信息,请参阅文档

GraphQL 参数的标准 Bean 验证

除了在模式级别强制执行的现有约束之外,您现在还可以使用标准 Bean 验证来验证声明为控制器方法参数的 GraphQL 参数。如果参数不符合定义的约束,将抛出验证异常,并写入 GraphQL 响应的相应“errors”部分。

@Controller
public class BookController {

    @MutationMapping
    public Book addBook(@Argument @Valid BookInput bookInput) {
        // ...
    }
}

public class BookInput {

    @NotNull
    private String title;

    @NotNull
    @Size(max=13)
    private String isbn;
}

这类似于 Spring MVC 或 Spring WebFlux 中现有的支持,您可以在参考文档的@Argument 验证部分了解更多信息。

上下文访问

新的 @ContextValue 注解提供了从控制器方法方便地访问 GraphQLContext 中值的途径。

控制器方法可以通过声明类型为 javax.security.Principal 的方法参数来访问已认证的用户。

@BatchMapping 方法可以访问与 @SchemaMapping 方法和任何 DataFetcher 相同的 GraphQLContext

更多

更多改进和修复已包含在本次发布中,您现在可以在 Spring Milestone 存储库中获得新的 Spring GraphQL 1.0.0-M4 版本。

你如何提供帮助?

如果您有兴趣提供帮助,您可以开始使用 Spring GraphQL,并在我们的 GitHub 项目上提出问题。如果您有一般性问题,请使用spring-graphql 标签stackoverflow.com上提问。

项目主页 | GitHub | 问题 | 文档 | Stack Overflow

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

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

了解更多

获得支持

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

了解更多

即将举行的活动

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

查看所有