启动器
这个项目建立在 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
应用程序属性。
声明一个WebInterceptor
bean,通过HTTP和WebSocket请求在GraphQL的Web拦截中注册。
声明一个ThreadLocalAccessor
bean 以帮助传播 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
。
标签 | 描述 | 样本值 |
---|---|---|
小路 | 数据获取器路径 | “查询.项目” |
结果 | 数据获取结果 | “成功”、“错误” |