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
    +关注

    关注

    20

    文章

    2997

    浏览量

    115628
  • spring
    +关注

    关注

    0

    文章

    341

    浏览量

    15770
  • GraphQL
    +关注

    关注

    0

    文章

    14

    浏览量

    767
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    一款基于Java+Spring Boot+Vue的智慧随访管理系统源码

    智慧随访管理系统源码,一款基于Java+Spring Boot+Vue的B/S架构医院随访管理系统源码,采用前后端分离技术(Ant-Design+MySQL5),具有自主版权和落地案例。 随访管理
    的头像 发表于 11-13 15:38 174次阅读
    一款基于Java+<b class='flag-5'>Spring</b> Boot+Vue的智慧随访管理系统源码

    Spring拦截器:你的请求休想逃过我的五指山!

    Spring框架中,拦截器(Interceptor)是一种强大的机制,它允许开发者在请求处理的不同阶段插入自定义逻辑。WebApplicationContext作为Spring Web应用的上下文容器,为拦截器的配置和管理提供了基础支持。
    的头像 发表于 07-26 11:25 511次阅读
    <b class='flag-5'>Spring</b>拦截器:你的请求休想逃过我的五指山!

    HarmonyOS5云服务技术分享--云缓存快速上手指南

    = pool.getResource()) { String value = jedis.get(\"name\"); } 3.2 Spring RedisTemplate(推荐企业级使用) ​​优势
    发表于 05-22 18:37

    锐宝智联精彩亮相Japan IT Week Spring 2025

    Japan IT Week Spring 2025于 4 月 23 日至 25 日在日本东京有明国际会展中心隆重举行。该展是日本乃至亚洲最具影响力的IT消费电子展之一,吸引来自全球各地的IT企业
    的头像 发表于 04-30 16:43 808次阅读

    Spring AI接入DeepSeek:快速打造微应用

    作者:京东科技 张新磊 背景 随着DeepSeek-R1的官宣开源,DeepSeek迅速成为AI领域的热门话题,吸引了大量开发者和研究者的关注。这一开源举措不仅推动了技术的普及,也促使更多企业和机构加入到开源生态中。例如,国内大厂X度于2月14日宣布将在未来几个月推出文新大模型4.5系列,并计划从闭源转向开源。这些动态无疑加速了大模型技术的发展,也为开发者提供了更多创新的可能性。 作为一名技术人,我深知紧跟时代潮流的重要性。在DeepSeek爆火之后,
    的头像 发表于 02-23 17:22 1725次阅读
    <b class='flag-5'>Spring</b> AI接入DeepSeek:快速打造微应用

    基于javaPoet的缓存key优化实践

    作者:京东物流 方志民 一. 背景 在一次系统opsreview中,发现了一些服务配置了@Cacheable注解。@cacheable 来源于spring cache框架中,作用是使用aop的方式将
    的头像 发表于 01-14 15:18 1157次阅读
    基于javaPoet的缓存key优化实践

    校园点餐订餐外卖跑腿Java源码

    创建一个校园点餐订餐外卖跑腿系统是一个复杂的项目,涉及到前端、后端、数据库设计等多个方面。在这里,我可以提供一个简化的Java后端示例,使用Spring Boot框架来搭建一个基本的API服务。这个
    的头像 发表于 12-24 14:55 918次阅读
    校园点餐订餐外卖跑腿Java源码

    SSM框架的源码解析与理解

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

    SSM开发中的常见问题及解决方案

    在SSM(Spring + Spring MVC + MyBatis)框架的开发过程中,开发者可能会遇到一些常见问题。以下是对这些问题的详细分析以及相应的解决方案: 一、配置文件问题 问题描述
    的头像 发表于 12-17 09:16 1846次阅读

    SSM与Hibernate的整合使用

    随着Java Web开发技术的不断进步,Spring、SpringMVC和MyBatis(SSM)框架组合已经成为企业级开发的首选。为了进一步提高开发效率和数据持久化层的灵活性,Hibernate
    的头像 发表于 12-17 09:14 991次阅读

    SSM框架的性能优化技巧 SSM框架中RESTful API的实现

    SSM框架的性能优化技巧 SSM(Spring + Spring MVC + MyBatis)框架的性能优化是提升Java Web应用性能的关键环节。以下是一些常用的性能优化技巧: 使用缓存
    的头像 发表于 12-17 09:10 1112次阅读

    SSM框架的优缺点分析 SSM在移动端开发中的应用

    SSM框架的优缺点分析 SSM框架,即SpringSpring MVC和MyBatis的整合,是当前比较流行的Java开源框架之一。以下是对SSM框架优缺点的详细分析: 优点 成本低
    的头像 发表于 12-16 18:18 3002次阅读

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

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

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

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

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

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