数据整合
Spring GraphQL 支持使用Querydsl通过 Spring Data Querydsl 扩展来获取数据。Querydsl 提供了一种灵活但类型安全的方法,通过使用注释处理器生成元模型来表达谓词。
公共接口 AccountRepository 扩展了 Repository,,>
}
然后用它来创建一个DataFetcher
:
DataFetcher dataFetcher =
DataFetcher> dataFetcher =
所述DataFetcher
构建一个QuerydslPredicate
从GraphQL请求参数,并使用它来获取数据。Spring Data支持QuerydslPredicateExecutor
JPA、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
+关注
关注
19文章
2964浏览量
104684 -
spring
+关注
关注
0文章
340浏览量
14333 -
GraphQL
+关注
关注
0文章
14浏览量
569
发布评论请先 登录
相关推荐
评论