Spring认证_什么是Spring GraphQL?

简介: Spring GraphQL 为构建在 GraphQL Java 上的 Spring 应用程序提供支持

Spring认证_什么是Spring GraphQL?
第一课:https://developer.aliyun.com/article/786339?spm=a2c6h.13148508.0.0.37b44f0eEwOe1V

第二课:https://developer.aliyun.com/article/786414?spm=a2c6h.13148508.0.0.37b44f0eEwOe1V

73003.jpg

启动器
这个项目建立在 Boot 2.x 上,但它应该与最新的 Boot2.4.x5 相关。

项目设置
要创建项目,请转到start.spring.io并为要使用的GraphQL传输选择启动器:

启动机

运输

执行

spring-boot-starter-web

HTTP

春季MVC

spring-boot-starter-websocket

网络结果

用于 Servlet 应用程序的 WebSocket

spring-boot-starter-webflux

HTTP、WebSocket

弹簧 WebFlux

在生成的项目中,graphql-spring-boot-starter手动添加:

依赖{

// Spring GraphQL 启动

实现 'org.springframework.experimental:graphql-spring-boot-starter:1.0.0-SNAPSHOT'

// ...
AI 代码解读

}

存储库{

MavenCentral()

maven { url 'https://repo.spring.io/milestone' } // 春季里程碑

maven { url 'https://repo.spring.io/snapshot' } // Spring 快照
AI 代码解读

}

架构
默认情况下,GraphQL 架构文件将在src/main/resources/graphql与扩展名“.graphqls”,“.graphql”,“.gql”,或“.gqls”。您可以自定义要检查的目录位置,如下所示:

spring.graphql.schema.locations=classpath:graphql/

所述模式模式可以在“/GraphQL/模式”被graphQL通过HTTP。这不是默认允许的:

spring.graphql.schema.printer.enabled=false

DataFetcher登记
你可以声明RuntimeWiringConfigurer在 Spring 的配置与 GraphQL 引擎豆类和使用这些登记的数据获取程序,类型旋转变压器,和更多:

@成分

公共类 PersonDataWiring 实现 RuntimeWiringConfigurer {

私有的最终 PersonService 服务;

公共 PersonDataWiring(PersonService 服务){

    this.service = 服务;

}

@覆盖

公共无效配置(RuntimeWiring.Builder builder){

    builder.type("查询", 接线 ->

            Wiring.dataFetcher("people", env -> this.service.findAll()));

}
AI 代码解读

}

查询dsl存储库
扩展QuerydslPredicateExecutor或扩展或ReactiveQuerydslPredicateExecutor存储库@GraphQlRepository被检测到的 Spring Data并决定DataFetcher自动注册以匹配环境查询的候选者。

网络搜索
默认情况下,GraphQL HTTP 访问地址 HTTP POST“/graphql”。路径可以自定义:

spring.graphql.path=/graphql

默认情况下,GraphQL WebSocket 支持“/graphql”处的 WebSocket。下面显示了适用于 WebSocket 处理的属性:

spring.graphql.websocket.path=/graphql

必须从客户端收到“CONNECTION_INIT”消息的时间

spring.graphql.websocket.connection-init-timeout=60s

GraphQL WebSocket 默认关闭。要启用它:

对于 Servlet 应用程序,添加 WebSocket starter spring-boot-starter-websocket。
对于 WebFlux 应用程序,设置spring.graphql.websocket.path应用程序属性。
声明一个WebInterceptorbean,通过HTTP和WebSocket请求在GraphQL的Web拦截中注册。

声明一个ThreadLocalAccessorbean 以帮助传播 Spring MVCThreadLocal中老鼠的价值。

GraphiQL
Spring Boot 启动器包含一个GraphiQL页面,默认情况下该页面在“/graphiql”中公开。您可以按如下方式配置:

spring.graphql.graphiql.enabled=true

spring.graphql.graphiql.path=/graphiql

指标
当启动器spring-boot-starter-actuator出现在类路径上时,将收集GraphQL请求的指标。您可以按以下方式寻找指标收集:

management.metrics.graphql.autotime.enabled=false

以下部分可能在您的应用程序配置中,可以通过Actuator Web 指标公开。如下所示:

management.endpoints.web.exposure.include=health,metrics,info

请求事件
请求访问位置/actuator/metrics/graphql.request。

标签

描述

样本值

结果

请求结果

“成功”、“错误”

DataFetcher 发生
一个DataFetcher指标定时器可在/actuator/metrics/graphql.datafetcher。

标签

描述

样本值

小路

数据获取器路径

“查询.项目”

结果

数据获取结果

“成功”、“错误”

错误投票
GraphQL 错误点击选择所在的位置/actuator/metrics/graphql.error。

标签

描述

样本值

错误类型

错误类型

“数据获取异常”

错误的路径

错误 JSON 路径

“$.project”

测试
Spring GraphQL 测试支持,将以下内容添加到您的类路径中,这是一个WebGraphQlTester可用于注入测试的团队:

依赖{

testImplementation 'org.springframework.boot:spring-boot-starter-test'

testImplementation 'org.springframework.graphql:spring-graphql-test:1.0.0-SNAPSHOT'

// 也添加这个,除非 spring-boot-starter-webflux 也存在

testImplementation 'org.springframework:spring-webflux'

// ...
AI 代码解读

}

存储库{

MavenCentral()

maven { url 'https://repo.spring.io/milestone' } // 春季里程碑

maven { url 'https://repo.spring.io/snapshot' } // Spring 快照
AI 代码解读

}

对于 Spring MVC 的基于 HTTP 的 GraphQL,用作MockMvc服务器:

@SpringBootTest

@AutoConfigureMockMvc

@AutoConfigureGraphQlTeste

公共类 MockMvcGraphQlTests {

@自动连线

私有 WebGraphQlTester graphQlTester;
AI 代码解读

}

针对 Spring WebFlux 的基于 HTTP 的 GraphQL,使用模拟服务器:

@SpringBootTest

@AutoConfigureWebTestClient

@AutoConfigureGraphQlTeste

公共类 MockMvcGraphQlTests {

@自动连线

私有 WebGraphQlTester graphQlTester;
AI 代码解读

}

对于GraphQL通过HTTP与正在运行的服务器:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

@AutoConfigureGraphQlTeste

公共类 MockMvcGraphQlTests {

@自动连线

私有 WebGraphQlTester graphQlTester;
AI 代码解读

}

订阅可以在没有 WebSocket 的情况下进行测试,如下所示:

@SpringBootTest

@AutoConfigureGraphQlTeste

公共类 MockMvcGraphQlTests {

@自动连线

私有 WebGraphQlTester graphQlTester;

@测试

无效订阅(){

    Flux<String> result = this.graphQlTester.query("订阅{问候}")

            .executeSubscription()

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

    // 使用“reactor-test”中的 StepVerifier 来验证流...

    StepVerifier.create(result)

            .expectNext("嗨")

            .expectNext("卓悦")

            .expectNext("你好")

            .verifyComplete();

}
AI 代码解读

}

订阅测试直接针对WebGraphQlHandlerHTTP和WebSocket传输委托的对象执行。它通过WebInterceptor链,然后调用GraphQL的Java返回一个响应流Publisher。

相关文章
安全无忧!在 Spring Boot 3.3 中轻松实现 TOTP 双因素认证
【10月更文挑战第8天】在现代应用程序开发中,安全性是一个不可忽视的重要环节。随着技术的发展,双因素认证(2FA)已经成为增强应用安全性的重要手段之一。本文将详细介绍如何在 Spring Boot 3.3 中实现基于时间的一次性密码(TOTP)双因素认证,让你的应用安全无忧。
351 5
|
10天前
|
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
41 0
在Spring boot中 使用JWT和过滤器实现登录认证
在Spring boot中 使用JWT和过滤器实现登录认证
380 0
Spring Boot 实现通用 Auth 认证的 4 种方式
本文介绍了在Spring Boot中实现通用Auth的四种方式:传统AOP、拦截器(Interceptor)、参数解析器(ArgumentResolver)和过滤器(Filter)。每种方式都通过实例代码详细说明了实现步骤,并总结了它们的执行顺序。首先,Filter作为Servlet规范的一部分最先被调用;接着是Interceptor,它可以在Controller方法执行前后进行处理;然后是ArgumentResolver,在参数传递给Controller之前解析并验证参数
基于内存认证的 Spring Security
通过本文的介绍,希望您能够深入理解基于内存认证的Spring Security配置与使用方法,并能够在实际开发中灵活应用这一技术,提升应用的安全性和用户体验。
84 9
|
4月前
|
Spring Boot 应用如何实现 JWT 认证?
Spring Boot 应用如何实现 JWT 认证?
134 8
如何在Spring Boot中使用GraphQL
如何在Spring Boot中使用GraphQL
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
180 1
Spring Boot 基于 SCRAM 认证集成 Kafka 的详解
【8月更文挑战第4天】本文详解Spring Boot结合SCRAM认证集成Kafka的过程。SCRAM为Kafka提供安全身份验证。首先确认Kafka服务已启用SCRAM,并准备认证凭据。接着,在`pom.xml`添加`spring-kafka`依赖,并在`application.properties`中配置Kafka属性,包括SASL_SSL协议与SCRAM-SHA-256机制。创建生产者与消费者类以实现消息的发送与接收功能。最后,通过实际消息传递测试集成效果与认证机制的有效性。
277 4