0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Spring认证_什么是Spring GraphQL?

IT胶囊 来源:「Spring」认证安全架构 作者:「Spring」认证安全 2021-08-09 11:31 次阅读

数据整合

Spring GraphQL 支持使用Querydsl通过 Spring Data Querydsl 扩展来获取数据。Querydsl 提供了一种灵活但类型安全的方法,通过使用注释处理器生成元模型来表达谓词。

公共接口 AccountRepository 扩展了 Repository,,>

}

然后用它来创建一个DataFetcher

DataFetcher dataFetcher =

DataFetcher> dataFetcher =

所述DataFetcher构建一个QuerydslPredicate从GraphQL请求参数,并使用它来获取数据。Spring Data支持QuerydslPredicateExecutorJPA、MongoDB和LDAP。

Spring GraphQL 存储库中的 webmvc-http 示例使用 Querydsl 来获取artifactRepositories

Querydsl 允许集成Predicate通过接受一个来自定义绑定到一个的请求QuerydslBinderCustomizer。对于请求中的可用参数,请求参数默认绑定为“等于”。

自动注册

存储库必须使用@GraphQlRepository默认情况下,查询返回的 GraphQL 类型名称必须与存储库域类型的简单名称匹配。如果它们不匹配,您可以使用的typeName属性@GraphQlRepository来设置 GraphQL 类型名称。

安全

要应用更细粒度的安全性,Spring Security 中注释添加到涉及获取 GraphQL 响应的特定部分的服务方法,例如@PreAuthorize@Secured。由于上下文传达使安全性和其他上下文在数据获取级别可用,因此应该是

测试

GraphQlTester

要创建GraphQlTester,您只需要一个GraphQlService,不需要传输:

.schemaResources(...)

。建造();

GraphQlService graphQlService = new ExecutionGraphQlService(graphQlSource);

WebGraphQlTester

如果没有 WebFlux,你可以支持你的 Spring 配置:

WebTestClient.bindToApplicationContext(上下文)

.baseUrl("/graphql")

WebGraphQlTester 测试器 = WebGraphQlTester.builder(client).build();

WebApplicationContext 上下文 = ... ;

WebTestClient 客户端 =

.configureClient()

。建造();

对于实时运行的服务器的测试:

WebTestClient.bindToServer()

。建造();

查询

字符串查询 = "{" +

" 发布 {" +

" }"+

"}";

graphQlTester.query(查询)

.path("project.releases[*].version")

.hasSizeGreaterThan(1);

错误

graphQlTester.query(查询)

.错误()

。核实()

.entityList(String.class)

错误过滤器可以注册并渗入所有测试:

.errorFilter(error -> ...)

或者直接检查所有错误,将它们标记为已过滤:

。执行()

.satisfy(错误 -> {

});

如果请求没有任何响应数据(例如状态),则使用executeAndVerify代替execute来验证响应中没有错误:

订阅

要测试订阅,您可以GraphQlTester创建创建GraphQlServicegraphql.GraphQL直接调用并返回响应流:

.executeSubscription()

Flux result = graphQlTester.query("订阅{问候}")

.toFlux("问候", String.class);

StepVerifier.create(result)

.expectNext("卓悦")

.verifyComplete();

要使用Web拦截链进行测试,您可以创建WebGraphQlTester一个WebGraphQlHandler

.interceptor((input, next) -> next.handle(input))

WebGraphQlTester graphQlTester = WebGraphQlTester.builder(handler).build();

未完待续……

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • spring
    +关注

    关注

    0

    文章

    332

    浏览量

    14161
  • GraphQL
    +关注

    关注

    0

    文章

    14

    浏览量

    533
收藏 人收藏

    评论

    相关推荐

    Spring中经典的9种设计模式

    spring中常用的设计模式达到九种,我们一一举例
    的头像 发表于 12-11 09:56 226次阅读
    <b class='flag-5'>Spring</b>中经典的9种设计模式

    Spring MVC的工作原理

    Spring MVC是一种基于Java的Web应用程序框架,它采用了Model-View-Controller(MVC)设计模式来分离应用程序的不同方面。Spring MVC的工作原理涉及多个关键
    的头像 发表于 12-03 11:49 465次阅读

    spring分布式框架有哪些

    Spring分布式框架是一套基于Spring框架的解决方案,用于构建分布式系统。它提供了一系列的组件和模块,可以帮助开发人员轻松地构建可扩展、高可用、高性能的分布式应用程序。下面将详细介绍一些常用
    的头像 发表于 11-16 10:58 358次阅读

    Spring布能用来搭建基础架构吗

    Spring Boot 是一个用于简化 Spring 应用程序开发的框架,它利用 Spring 框架的强大功能,使得基础架构的搭建变得更加简单、轻量级、易于维护。在本文中,我们将详细讨论
    的头像 发表于 11-16 10:56 211次阅读

    Spring Boot 的设计目标

    什么是Spring Boot Spring Boot 是 Spring 开源组织下的一个子项目,也是 Spring 组件一站式解决方案,主要是为了简化使用
    的头像 发表于 10-13 14:56 312次阅读
    <b class='flag-5'>Spring</b> Boot 的设计目标

    Spring Boot的启动原理

    可能很多初学者会比较困惑,Spring Boot 是如何做到将应用代码和所有的依赖打包成一个独立的 Jar 包,因为传统的 Java 项目打包成 Jar 包之后,需要通过 -classpath 属性
    的头像 发表于 10-13 11:44 370次阅读
    <b class='flag-5'>Spring</b> Boot的启动原理

    Spring Boot启动 Eureka流程

    在上篇中已经说过了 Eureka-Server 本质上是一个 web 应用的项目,今天就来看看 Spring Boot 是怎么启动 Eureka 的。 Spring Boot 启动 Eureka
    的头像 发表于 10-10 11:40 419次阅读
    <b class='flag-5'>Spring</b> Boot启动 Eureka流程

    Spring Boot Actuator快速入门

    不知道大家在写 Spring Boot 项目的过程中,使用过 Spring Boot Actuator 吗?知道 Spring Boot Actuator 是什么,干什么的吗?今天就要来给大家介绍
    的头像 发表于 10-09 17:11 343次阅读

    Spring Boot如何实现异步任务

    Spring Boot 提供了多种方式来实现异步任务,这里介绍三种主要实现方式。 1、基于注解 @Async @Async 注解是 Spring 提供的一种轻量级异步方法实现方式,它可以标记在方法
    的头像 发表于 09-30 10:32 488次阅读

    Spring Kafka的各种用法

    最近业务上用到了Spring Kafka,所以系统性的探索了下Spring Kafka的各种用法,发现了很多实用的特性,下面介绍下Spring Kafka的消息重试机制。 0. 前言 原生
    的头像 发表于 09-25 17:04 399次阅读

    Spring Boot 3.1 中如何整合Spring Security和Keycloak

    虽然Keycloak 团队宣布了不再对Spring Security提供适配,但Spring Security长期以来一直为OAuth和OIDC提供强大的内置支持。所以,只要我们理解Spring Security是如何处理OAu
    的头像 发表于 06-08 14:54 722次阅读
    <b class='flag-5'>Spring</b> Boot 3.1 中如何整合<b class='flag-5'>Spring</b> Security和Keycloak

    如何使用Spring Boot 2.x和Redis执行异步任务?

    Spring 是最流行 Java 应用程序开发框架。因此,Spring 社区也是最大的开源社区之一。除
    的头像 发表于 06-06 15:57 605次阅读
    如何使用<b class='flag-5'>Spring</b> Boot 2.x和Redis执行异步任务?

    Spring中11个最常用的扩展点分享2

    在使用spring的过程中,我们有没有发现它的扩展能力很强呢?由于这个优势的存在,使得spring具有很强的包容性,所以很多第三方应用或者框架可以很容易的投入到spring的怀抱中。今天我们主要来学习
    的头像 发表于 05-11 10:48 260次阅读

    Spring中11个最常用的扩展点分享1

    在使用spring的过程中,我们有没有发现它的扩展能力很强呢?由于这个优势的存在,使得spring具有很强的包容性,所以很多第三方应用或者框架可以很容易的投入到spring的怀抱中。今天我们主要来学习
    的头像 发表于 05-11 10:48 369次阅读

    Spring干掉原生JVM?

    这意味着,除了 Spring 诞生以来就支持的 Java 虚拟机,官方添加了使用 GraalVM 将 Spring 应用编译成原生镜像的 beta 支持,这样的话,就能提供一种新的方式来部署 Spring 应用。
    的头像 发表于 05-05 09:25 353次阅读
    <b class='flag-5'>Spring</b>干掉原生JVM?