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

    文章

    2964

    浏览量

    104684
  • spring
    +关注

    关注

    0

    文章

    340

    浏览量

    14333
  • GraphQL
    +关注

    关注

    0

    文章

    14

    浏览量

    569
收藏 人收藏

    评论

    相关推荐

    SSM框架的源码解析与理解

    SSM框架(Spring + Spring MVC + MyBatis)是一种在Java开发中常用的轻量级企业级应用框架。它通过整合SpringSpring MVC和MyBatis三
    的头像 发表于 12-17 09:20 58次阅读

    SSM开发环境的搭建教程 SSM与Spring Boot的区别

    SSM开发环境的搭建教程 SSM(Spring+SpringMVC+MyBatis)开发环境的搭建涉及多个步骤,以下是详细的教程: 创建Maven项目 : 使用Maven工具创建一个新的Maven
    的头像 发表于 12-16 18:13 265次阅读

    SSM框架在Java开发中的应用 如何使用SSM进行web开发

    SSM框架,即Spring、SpringMVC和MyBatis的整合,是Java Web开发中常用的技术栈。它通过分层架构,实现了视图、控制、业务逻辑和数据访问的分离,提高了代码的可维护性和可扩展性
    的头像 发表于 12-16 17:28 289次阅读

    Spring 应用合并之路(二):峰回路转,柳暗花明

    作者:京东科技 李君 书接上文,前面在 Spring 应用合并之路(一):摸石头过河 介绍了几种不成功的经验,下面继续折腾… 四、仓库合并,独立容器 在经历了上面的尝试,在同事为啥不搞两个独立的容器
    的头像 发表于 12-12 11:22 659次阅读

    JavaWeb框架比较

    JavaWeb框架为开发人员提供了构建Web应用程序所需的基础设施和组件,每种框架都有其独特的特点和适用场景。以下是对几种主流JavaWeb框架的比较: Spring MVC 优点
    的头像 发表于 11-25 09:14 194次阅读

    Spring事务实现原理

    作者:京东零售 范锡军 1、引言 springspring-tx模块提供了对事务管理支持,使用spring事务可以让我们从复杂的事务处理中得到解脱,无需要去处理获得连接、关闭连接、事务提交和回滚等
    的头像 发表于 11-08 10:10 799次阅读
    <b class='flag-5'>Spring</b>事务实现原理

    SpringBean初始化顺序

    Spring bean是Spring框架在运行时管理的对象。Spring bean是任何Spring应用程序的基本构建块。我们编写的大多数应用程序逻辑代码都将放在
    的头像 发表于 11-06 16:04 160次阅读
    SpringBean初始化顺序

    Spring Cloud Gateway网关框架

    Spring Cloud Gateway网关框架 本软件微服务架构中采用Spring Cloud Gateway网关控制框架,Spring Cloud Gateway是Spring C
    的头像 发表于 08-22 09:58 476次阅读
    <b class='flag-5'>Spring</b> Cloud Gateway网关框架

    vue+spring boot人员定位系统源码,实现实时定位、智慧调度、轨迹追踪

    、机具、物料上定位标签回传的位置信息数据,采用多维定位模式,精确定位人、机具、物料的实时位置,实现实时定位、物料标签配置、智慧调度、轨迹追踪、工时统计、区域物料统计、电子围栏等应用功能。 技术架构:java+ spring boot+ v
    的头像 发表于 08-08 14:27 668次阅读
    vue+<b class='flag-5'>spring</b> boot人员定位系统源码,实现实时定位、智慧调度、轨迹追踪

    玩转Spring状态机

    说起Spring状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring状态机就是状态模式的一种实现,在介绍Spring状态机之前,让我们来看看设计模式中的状态模式
    的头像 发表于 06-25 14:21 923次阅读
    玩转<b class='flag-5'>Spring</b>状态机

    Saturday只是一个枚举元素啊,而today是一个枚举变量,为什么他俩所占的内存空间大小是一样的? [

    #include \"stdio.h\" enum Season { spring, summer=100, fall=96, winter ,winter1
    发表于 05-10 07:07

    SpingBoot的5个扩展点,超级实用!

    我们在启动Spring Boot项目的时候,是执行这样一个方法来启动的
    的头像 发表于 02-22 11:28 446次阅读
    SpingBoot的5个扩展点,超级实用!

    Spring事务传播性的相关知识

    本文主要介绍了Spring事务传播性的相关知识。
    的头像 发表于 01-10 09:29 433次阅读
    <b class='flag-5'>Spring</b>事务传播性的相关知识

    使用Spring Boot 3.2虚拟线程搭建静态文件服务器

    Spring Boot 3.2 于 2023 年 11 月大张旗鼓地发布,标志着 Java 开发领域的一个关键时刻。这一突破性的版本引入了一系列革命性的功能。
    的头像 发表于 01-09 09:34 1116次阅读
    使用<b class='flag-5'>Spring</b> Boot 3.2虚拟线程搭建静态文件服务器

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

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