• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于java:Spring认证什么是Spring-GraphQL

java 搞代码 4年前 (2022-01-27) 35次浏览 已收录 0个评论

Spring认证_什么是Spring GraphQL?
第一课:https://segmentfault.com/a/11…

第二课:https://segmentfault.com/a/11…

启动器
这个我的项目建设在 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'

// ...

}

存储库{

MavenCentral()

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

maven { url 'https://repo.spring.io/snapshot' } // Spring 快照

}

架构
默认状况下,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()));

}

}

查问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'

// ...

}

存储库{

MavenCentral()

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

maven { url 'https://repo.spring.io/snapshot' } // Spring 快照

}

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

@SpringBootTest

@AutoConfigureMockMvc

@AutoConfigureGraphQlTeste

公共类 MockMvcGraphQlTests {

@主动连线

公有 WebGraphQlTester graphQlTester;

}

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

@SpringBootTest

@AutoConfigureWebTestClient

@AutoConfigureGraphQlTeste

公共类 MockMvcGraphQlTests {

@主动连线

公有 WebGraphQlTester graphQlTester;

}

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

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)

@AutoConfigureGraphQlTeste

公共类 MockMvcGraphQlTests {

@主动连线

公有 WebGraphQlTester graphQlTester;

}

订阅能够在没有 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();

}

}

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于java:Spring认证什么是Spring-GraphQL

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址