Spring认证_什么是Spring GraphQL?

电子说

1.2w人已加入

描述

数据整合

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创建创建GraphQlServicegraphql.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();

未完待续……

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分