「Spring認證」什麼是Spring GraphQL?
Spring認證_什麼是Spring GraphQL?
第一課:http://blog.itpub.net/69981720/viewspace-2785689/
第二課:http://blog.itpub.net/69981720/viewspace-2785925/
啟動器
這個專案建立在 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 ' } // 春季里程碑
maven { url ' } // 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 MVC
ThreadLocal
中老鼠的價值。
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 ' } // 春季里程碑
maven { url ' } // 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();
}
}
訂閱測試直接針對
WebGraphQlHandler
HTTP和WebSocket傳輸委託的物件執行。它透過
WebInterceptor
鏈,然後呼叫GraphQL的Java返回一個響應流
Publisher
。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69981720/viewspace-2786174/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring認證_什麼是Spring GraphQLSpring
- Spring認證_什麼是Spring GraphQL?Spring
- Spring認證_什麼是Spring Security?Spring
- 「Spring認證」Spring 框架概述Spring框架
- Spring 是什麼?Spring
- 什麼是Spring Boot?Spring Boot
- 什麼是Spring Data?Spring
- 什麼是Spring Boot?為什麼要學習Spring Boot?Spring Boot
- 「Spring認證」如何開始學習Spring?Spring
- 「Spring認證」Spring Bean 定義教學SpringBean
- 什麼是Spring Boot Starters?Spring Boot
- 什麼是 Spring AOT 引擎?Spring
- 什麼是Spring Framework 框架?SpringFramework框架
- Spring Boot與Spring Cloud是什麼關係?Spring BootCloud
- Spring原始碼剖析開篇:什麼是Spring?Spring原始碼
- Spring boot與Spring cloud 是什麼關係?Spring BootCloud
- Spring Security認證提供程式Spring
- Spring security(四)-spring boot +spring security簡訊認證+redis整合Spring BootRedis
- spring boot與spring mvc的區別是什麼?Spring BootMVC
- 五、Spring Boot整合Spring Security之認證流程2Spring Boot
- Spring認證-Spring 安全架構專題教程Spring架構
- Spring Aware 到底是什麼?Spring
- Spring IoC 到底是什麼Spring
- spring中FactoryBean是什麼beanSpringBean
- spring security許可權認證Spring
- Spring security(三)---認證過程Spring
- Spring Security認證器實現Spring
- 多因子認證是什麼意思?與雙因子認證有什麼區別?
- 什麼是WHQL微軟徽標認證?為什麼需要這項認證?微軟
- 什麼是Spring 框架?Spring 框架有哪些主要模組?Spring框架
- 什麼是 Spring Cloud 資料流?SpringCloud
- WHQL認證是什麼?如何實現
- 【認證與授權】Spring Security系列之認證流程解析Spring
- spring security 認證原始碼跟蹤Spring原始碼
- Spring+ Spring cloud + SSO單點登入應用認證SpringCloud
- Spring認證中國教育管理中心-Spring Data MongoDB教程SpringMongoDB
- 什麼是百家號藍V認證?藍V認證有什麼優勢?
- 什麼是SSL安全認證閘道器?