0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Spring認(rèn)證_什么是Spring GraphQL?

IT膠囊 ? 來源:「Spring」認(rèn)證安全架構(gòu) ? 作者:「Spring」認(rèn)證安全 ? 2021-08-09 11:31 ? 次閱讀

數(shù)據(jù)整合

Spring GraphQL 支持使用Querydsl通過 Spring Data Querydsl 擴(kuò)展來獲取數(shù)據(jù)。Querydsl 提供了一種靈活但類型安全的方法,通過使用注釋處理器生成元模型來表達(dá)謂詞。

公共接口 AccountRepository 擴(kuò)展了 Repository,,>

}

然后用它來創(chuàng)建一個(gè)DataFetcher

DataFetcher dataFetcher =

DataFetcher> dataFetcher =

所述DataFetcher構(gòu)建一個(gè)QuerydslPredicate從GraphQL請求參數(shù),并使用它來獲取數(shù)據(jù)。Spring Data支持QuerydslPredicateExecutorJPA、MongoDB和LDAP。

Spring GraphQL 存儲(chǔ)庫中的 webmvc-http 示例使用 Querydsl 來獲取artifactRepositories

Querydsl 允許集成Predicate通過接受一個(gè)來自定義綁定到一個(gè)的請求QuerydslBinderCustomizer。對于請求中的可用參數(shù),請求參數(shù)默認(rèn)綁定為“等于”。

自動(dòng)注冊

存儲(chǔ)庫必須使用@GraphQlRepository默認(rèn)情況下,查詢返回的 GraphQL 類型名稱必須與存儲(chǔ)庫域類型的簡單名稱匹配。如果它們不匹配,您可以使用的typeName屬性@GraphQlRepository來設(shè)置 GraphQL 類型名稱。

安全

要應(yīng)用更細(xì)粒度的安全性,Spring Security 中注釋添加到涉及獲取 GraphQL 響應(yīng)的特定部分的服務(wù)方法,例如@PreAuthorize@Secured。由于上下文傳達(dá)使安全性和其他上下文在數(shù)據(jù)獲取級(jí)別可用,因此應(yīng)該是

測試

GraphQlTester

要?jiǎng)?chuàng)建GraphQlTester,您只需要一個(gè)GraphQlService,不需要傳輸:

.schemaResources(...)

。建造();

GraphQlService graphQlService = new ExecutionGraphQlService(graphQlSource);

WebGraphQlTester

如果沒有 WebFlux,你可以支持你的 Spring 配置:

WebTestClient.bindToApplicationContext(上下文)

.baseUrl("/graphql")

WebGraphQlTester 測試器 = WebGraphQlTester.builder(client).build();

WebApplicationContext 上下文 = ... ;

WebTestClient 客戶端 =

.configureClient()

。建造();

對于實(shí)時(shí)運(yùn)行的服務(wù)器的測試:

WebTestClient.bindToServer()

。建造();

查詢

字符串查詢 = "{" +

" 發(fā)布 {" +

" }"+

"}";

graphQlTester.query(查詢)

.path("project.releases[*].version")

.hasSizeGreaterThan(1);

錯(cuò)誤

graphQlTester.query(查詢)

.錯(cuò)誤()

。核實(shí)()

.entityList(String.class)

錯(cuò)誤過濾器可以注冊并滲入所有測試:

.errorFilter(error -> ...)

或者直接檢查所有錯(cuò)誤,將它們標(biāo)記為已過濾:

。執(zhí)行()

.satisfy(錯(cuò)誤 -> {

});

如果請求沒有任何響應(yīng)數(shù)據(jù)(例如狀態(tài)),則使用executeAndVerify代替execute來驗(yàn)證響應(yīng)中沒有錯(cuò)誤:

訂閱

要測試訂閱,您可以GraphQlTester創(chuàng)建創(chuàng)建GraphQlService,graphql.GraphQL直接調(diào)用并返回響應(yīng)流:

.executeSubscription()

Flux result = graphQlTester.query("訂閱{問候}")

.toFlux("問候", String.class);

StepVerifier.create(result)

.expectNext("卓悅")

.verifyComplete();

要使用Web攔截鏈進(jìn)行測試,您可以創(chuàng)建WebGraphQlTester一個(gè)WebGraphQlHandler

.interceptor((input, next) -> next.handle(input))

WebGraphQlTester graphQlTester = WebGraphQlTester.builder(handler).build();

未完待續(xù)……

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    19

    文章

    2952

    瀏覽量

    104487
  • spring
    +關(guān)注

    關(guān)注

    0

    文章

    338

    瀏覽量

    14296
  • GraphQL
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    558
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Spring事務(wù)實(shí)現(xiàn)原理

    作者:京東零售 范錫軍 1、引言 springspring-tx模塊提供了對事務(wù)管理支持,使用spring事務(wù)可以讓我們從復(fù)雜的事務(wù)處理中得到解脫,無需要去處理獲得連接、關(guān)閉連接、事務(wù)提交和回滾等
    的頭像 發(fā)表于 11-08 10:10 ?436次閱讀
    <b class='flag-5'>Spring</b>事務(wù)實(shí)現(xiàn)原理

    Spring Cloud Gateway網(wǎng)關(guān)框架

    Spring Cloud Gateway網(wǎng)關(guān)框架 本軟件微服務(wù)架構(gòu)中采用Spring Cloud Gateway網(wǎng)關(guān)控制框架,Spring Cloud Gateway是Spring C
    的頭像 發(fā)表于 08-22 09:58 ?413次閱讀
    <b class='flag-5'>Spring</b> Cloud Gateway網(wǎng)關(guān)框架

    玩轉(zhuǎn)Spring狀態(tài)機(jī)

    說起Spring狀態(tài)機(jī),大家很容易聯(lián)想到這個(gè)狀態(tài)機(jī)和設(shè)計(jì)模式中狀態(tài)模式的區(qū)別是啥呢?沒錯(cuò),Spring狀態(tài)機(jī)就是狀態(tài)模式的一種實(shí)現(xiàn),在介紹Spring狀態(tài)機(jī)之前,讓我們來看看設(shè)計(jì)模式中的狀態(tài)模式
    的頭像 發(fā)表于 06-25 14:21 ?859次閱讀
    玩轉(zhuǎn)<b class='flag-5'>Spring</b>狀態(tài)機(jī)

    Spring事務(wù)傳播性的相關(guān)知識(shí)

    本文主要介紹了Spring事務(wù)傳播性的相關(guān)知識(shí)。
    的頭像 發(fā)表于 01-10 09:29 ?387次閱讀
    <b class='flag-5'>Spring</b>事務(wù)傳播性的相關(guān)知識(shí)

    Spring狀態(tài)機(jī)的實(shí)現(xiàn)原理和使用方法

    說起 Spring 狀態(tài)機(jī),大家很容易聯(lián)想到這個(gè)狀態(tài)機(jī)和設(shè)計(jì)模式中狀態(tài)模式的區(qū)別是啥呢?沒錯(cuò),Spring 狀態(tài)機(jī)就是狀態(tài)模式的一種實(shí)現(xiàn),在介紹 Spring 狀態(tài)機(jī)之前,讓我們來看看設(shè)計(jì)模式中的狀態(tài)模式。
    的頭像 發(fā)表于 12-26 09:39 ?1834次閱讀
    <b class='flag-5'>Spring</b>狀態(tài)機(jī)的實(shí)現(xiàn)原理和使用方法

    Spring事務(wù)失效的十種常見場景

    Spring針對Java Transaction API (JTA)、JDBC、Hibernate和Java Persistence API(JPA)等事務(wù) API,實(shí)現(xiàn)了一致的編程模型,而
    的頭像 發(fā)表于 12-11 15:03 ?836次閱讀

    Spring中經(jīng)典的9種設(shè)計(jì)模式

    spring中常用的設(shè)計(jì)模式達(dá)到九種,我們一一舉例
    的頭像 發(fā)表于 12-11 09:56 ?904次閱讀
    <b class='flag-5'>Spring</b>中經(jīng)典的9種設(shè)計(jì)模式

    dubbo和spring cloud區(qū)別

    Dubbo和Spring Cloud是兩個(gè)非常流行的微服務(wù)框架,各有自己的特點(diǎn)和優(yōu)勢。在本文中,我們將詳細(xì)介紹Dubbo和Spring Cloud的區(qū)別。 1.架構(gòu)設(shè)計(jì): Dubbo是阿里巴巴開源
    的頭像 發(fā)表于 12-04 14:47 ?1549次閱讀

    Spring中依賴注入的四種方式

    Spring框架中,依賴注入是一種核心的概念和機(jī)制。通過依賴注入,我們可以讓對象之間的依賴關(guān)系更加松散,并且能夠方便地進(jìn)行單元測試和模塊化開發(fā)。在Spring中,有多種方式來實(shí)現(xiàn)依賴注入,下面將
    的頭像 發(fā)表于 12-03 15:11 ?1827次閱讀

    Spring MVC的工作原理

    Spring MVC是一種基于Java的Web應(yīng)用程序框架,它采用了Model-View-Controller(MVC)設(shè)計(jì)模式來分離應(yīng)用程序的不同方面。Spring MVC的工作原理涉及多個(gè)關(guān)鍵
    的頭像 發(fā)表于 12-03 11:49 ?726次閱讀

    Spring Boot 3.2支持虛擬線程和原生鏡像

    Spring Boot 3.2 前幾日發(fā)布,讓我們用 Java 21、GraalVM 和虛擬線程來嘗試一下。
    的頭像 發(fā)表于 11-30 16:22 ?671次閱讀

    Spring MVC的工作原理是怎樣的

    Spring MVC是一種基于Java的Web框架,它充分利用了Java的優(yōu)點(diǎn),如面向?qū)ο缶幊獭⒛K化、可重用性和可擴(kuò)展性。Spring MVC的工作原理可以總結(jié)為以下幾個(gè)步驟:請求的發(fā)送、請求
    的頭像 發(fā)表于 11-22 16:53 ?810次閱讀

    Spring依賴注入的方式

    Spring 是一個(gè)開源的輕量級(jí)框架,可以用于構(gòu)建企業(yè)級(jí)應(yīng)用程序。其最重要的特性之一是依賴注入(Dependency Injection,DI),這是一種設(shè)計(jì)模式,它可以幫助我們解耦代碼、提高
    的頭像 發(fā)表于 11-22 15:12 ?444次閱讀

    spring分布式框架有哪些

    Spring分布式框架是一套基于Spring框架的解決方案,用于構(gòu)建分布式系統(tǒng)。它提供了一系列的組件和模塊,可以幫助開發(fā)人員輕松地構(gòu)建可擴(kuò)展、高可用、高性能的分布式應(yīng)用程序。下面將詳細(xì)介紹一些常用
    的頭像 發(fā)表于 11-16 10:58 ?736次閱讀

    Spring布能用來搭建基礎(chǔ)架構(gòu)嗎

    Spring Boot 是一個(gè)用于簡化 Spring 應(yīng)用程序開發(fā)的框架,它利用 Spring 框架的強(qiáng)大功能,使得基礎(chǔ)架構(gòu)的搭建變得更加簡單、輕量級(jí)、易于維護(hù)。在本文中,我們將詳細(xì)討論
    的頭像 發(fā)表于 11-16 10:56 ?362次閱讀