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

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

3天内不再提示

Spring认证_什么是Spring GraphQL?

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

数据整合

Spring GraphQL 支持使用Querydsl通过 Spring DataQuerydsl 扩展来获取数据。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();

未完待续……

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

    关注

    19

    文章

    2934

    浏览量

    103727
  • spring
    +关注

    关注

    0

    文章

    334

    浏览量

    14237
  • GraphQL
    +关注

    关注

    0

    文章

    14

    浏览量

    550
收藏 人收藏

    评论

    相关推荐

    Spring状态机的实现原理和使用方法

    说起 Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错, Spring状态机就是状态模式的一种实现,在介绍 Spring状态机之前,让我们来看看设计模式中的状态模式。
    的头像 发表于12-26 09:39 1564次阅读
    <b class='flag-5'>Spring</b>状态机的实现原理和使用方法

    dubbo和springcloud区别

    Dubbo和 SpringCloud是两个非常流行的微服务框架,各有自己的特点和优势。在本文中,我们将详细介绍Dubbo和 SpringCloud的区别。 1.架构设计: Dubbo是阿里巴巴开源
    的头像 发表于12-04 14:47 1089次阅读

    SpringMVC的工作原理

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

    SpringMVC的工作原理是怎样的

    SpringMVC是一种基于Java的Web框架,它充分利用了Java的优点,如面向对象编程、模块化、可重用性和可扩展性。 SpringMVC的工作原理可以总结为以下几个步骤:请求的发送、请求
    的头像 发表于11-22 16:53 471次阅读

    Spring依赖注入的方式

    Spring是一个开源的轻量级框架,可以用于构建企业级应用程序。其最重要的特性之一是依赖注入(Dependency Injection,DI),这是一种设计模式,它可以帮助我们解耦代码、提高
    的头像 发表于11-22 15:12 348次阅读

    spring分布式框架有哪些

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

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

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

    SpringBoot 的设计目标

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

    SpringBoot的启动原理

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

    SpringBoot启动 Eureka流程

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

    SpringBoot Actuator快速入门

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

    SpringSecurity 的关键配置

    class SecurityConfig extends WebSecurityConfigurerAdapter { //配置 SpringSecurity 中的过滤器链 @Override
    的头像 发表于09-30 16:10 377次阅读

    SpringBoot如何实现异步任务

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

    SpringKafka的各种用法

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

    SpringAOP如何破解java应用

    前面我们看过javaassit是如何破解java应用,核心都是AOP相关的知识,今天我们看下 SpringAOP是怎么回事! Spring-AOP spring5.x版本 AOP面向切面编程,通过
    的头像 发表于09-25 11:16 735次阅读
    <b class='flag-5'>Spring</b> AOP如何破解java应用