數據整合
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創建創建GraphQlService,graphql.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文章
3001瀏覽量
116422 -
spring
+關注
關注
0文章
341瀏覽量
15935 -
GraphQL
+關注
關注
0文章
14瀏覽量
801
發布評論請先 登錄
TLE989x EvalBoard with TQFP/LQFP spring socket v01_1 評估板深度解析
一款基于Java+Spring Boot+Vue的智慧隨訪管理系統源碼
哪些產品要做MIC認證呢?
srrc認證是強制認證嗎?
3C認證派生是什么意思?
TELEC認證怎么辦理
電子產品SIRIM認證要求
Spring攔截器:你的請求休想逃過我的五指山!
哪些產品要做ncc認證?
一文了解什么是 BQB 認證
Spring認證_什么是Spring GraphQL?
評論