Spring GraphQL 1.0.0-M4 版本发布

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

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

在此里程碑中,我们进一步改进了注解编程模型并扩展了在之前的里程碑中提供的 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 接口部分了解更多信息。

Query By Example 支持

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

QueryByExampleDataFetcher 使创建 DataFetcher 变得容易,它可以将 GraphQL 参数绑定到示例对象上,然后使用该对象来查询数据。还有一个基于 @GraphQlRepository 注解的 Query By Example 存储库的自动化发现功能,并可以映射到顶层 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 项目上提交问题。如果您有一般性问题,请在 stackoverflow.com 上使用 spring-graphql 标签提问。

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

获取 Spring 通讯

订阅 Spring 通讯保持联系

订阅

先行一步

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

了解更多

获取支持

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

了解更多

近期活动

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

查看全部