在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring認證_什么是Spring GraphQL

IT膠囊 ? 來源:「Spring」認證安全架構 ? 作者:「Spring」認證安全 ? 2021-08-06 14:30 ? 次閱讀

Spring GraphQL 為構建在 GraphQL Java 上的 Spring 應用程序提供支持。兩個團隊之間的聯合聯合。我們的共同理念是少固執己見,更專注于全面和廣泛的支持。

Spring GraphQL 是 GraphQL Java 團隊的 GraphQL Java Spring 項目的繼承者。它將成為所有 Spring、GraphQL 應用程序的基礎。

網絡傳輸

Spring GraphQL 支持通過 HTTP 和 WebSocket 的 GraphQL 請求。

HTTP

GraphQlHttpHandler通過 HTTP 請求處理 GraphQL,并委托給 Web 攔截執行請求。有兩種變體,一種用于 Spring MVC,一種用于 Spring WebFlux。分別依賴周期性和非周期性 I/O 來寫 HTTP 響應。

請求必須使用 HTTP POST 和 GraphQL 請求詳細信息作為 JSON 包含在請求正文中,如提議的 GraphQL over HTTP 規范中定義。成功解碼 JSON 正文后,HTTP 響應狀態始終為 200(OK),并且 GraphQL 請求執行中任何錯誤都出現在 GraphQL 響應的“錯誤”部分。

GraphQlHttpHandler可以通過聲明一個RouterFunctionbean 并使用RouterFunctions來自 Spring MVC 或 WebFlux 的來創建路由來作為 HTTP 公開公開。啟動啟動器執行此操作。

Spring GraphQL 存儲庫包含一個 Spring MVC HTTP 示例應用程序。

網絡結果

GraphQlWebSocketHandler基于graphql的協議通過WebSocket請求處理Graphws庫。在WebSocket上使用GraphQL的結果是訂閱,它允許發送GraphQL響應流,但它也可以用于有一次響應的經常查詢處理程序。個請求委托給Web攔截鏈以進一步執行請求。

有兩種變體GraphQlWebSocketHandler,用于一種Spring MVC,用于Spring WebFlux。 回流處理請求并具有強大的壓處理功能。消息,這很有效,因為在 GraphQL Java 中訂閱響應是 Reactive Streams Publisher

graphql-ws項目已經全部供客戶使用的配方。

GraphQlWebSocketHandler通過聲明SimpleUrlHandlerMappingbean 并可以使用通信處理程序映射到 URL 路徑來公開為 WebSocket 需求。啟動啟動器具有啟用此功能的選項,詳細信息或檢查或例如配置,請參閱 Web 頁面。GraphQlWebMvcAutoConfigurationGraphQlWebFluxAutoConfiguration

Spring GraphQL 存儲庫包含一個 WebFlux WebSocket 示例應用程序。

網頁攔截

HTTP和WebSocket的傳輸處理程序委托給一個通用的網絡攔截鏈來執行請求。鏈該由一系列WebInterceptor組件組成,一個后跟GraphQlService調用GraphQL的Java引擎的。

WebInterceptor在 Spring MVC 和 WebFlux 應用程序中使用的通用組件。使用它來攔截請求、檢查 HTTP 請求標頭或注冊以下內容的轉換graphql.ExecutionInput

類 MyInterceptor 實現了 WebInterceptor {

@覆蓋

public Mono 攔截(WebInput webInput, WebGraphQlHandler next) {

webInput.configureExecutionInput((executionInput, builder) -> {

Map map = ... ;,>

返回 builder.extensions(map).build();

});

返回 next.handle(webInput);

}

}

使用WebInterceptor也攔截響應,增加HTTP響應頭,或轉換graphql.ExecutionResult

類 MyInterceptor 實現了 WebInterceptor {

@覆蓋

public Mono 攔截(WebInput webInput, WebGraphQlHandler next) {

返回 next.handle(webInput)

.map(webOutput -> {

對象數據 = webOutput.getData();

對象更新數據 = ... ;

返回 webOutput.transform(builder -> builder.data(updatedData));

});

}

}

WebGraphQlHandler提供了一個builder來初始化Web攔截鏈。構建鏈后,您可以使用結果WebGraphQlHandler來初始化HTTP或WebSocket傳輸處理程序。啟動器配置了所有這些,有關詳細信息,請參見Web Endpoints,或檢查GraphQlWebMvcAutoConfigurationGraphQlWebFluxAutoConfiguration配置。

查詢執行

GraphQlService是調用GraphQL Java 來執行請求的主要Spring GraphQL 抽象。通過傳輸,例如Web 傳輸,委托GraphQlService來處理請求。

主要實現ExecutionGraphQlService是圍繞著調用的薄外觀graphql.GraphQL。它配置了一個GraphQlSource用于訪問graphql.GraphQL實例。

GraphQLSource

GraphQlSource是核心 Spring GraphQL 抽象,用于訪問graphql.GraphQL請求執行的實例。它提供了一個構建器 API 來初始化 GraphQL Java 并構建一個GraphQlSource

GraphQlSource可通過訪問的默認構建器GraphQlSource.builder()支持Reactive DataFetcher、Context Propagation和Exception Resolution。

反應式 DataFetcher

默認GraphQlSource構建器啟用對一個DataFetcher報道查看Mono或的請立即獲取iTunes Flux。報道查看無論類型適合在一個CompletableFutureFlux聚集,變成了一個列表值,除非請求是GraphQL訂閱請求,這種在情況下報道查看值保持在無流Publisher的流GraphQL響應。

反應式DataFetcher可以依賴對從傳輸層傳播的 Reactor 上下文的訪問,例如來自 WebFlux 請求處理,請參閱 WebFlux 上下文。

大約傳播

Spring GraphQL 支持從Web 傳輸、通過GraphQL 引擎以及DataFetcher它調用的其他組件透明地傳播上下文。這包括ThreadLocal來自SpringMVC 請求處理線程的上下文和Context來自WebFlux 處理管道的Reactor。

網管

DataFetcherGraphQL Java 調用的 A 和其他組件可能并不總是在與 Spring MVC 處理程序相同的線程上執行,例如如果異步WebInterceptorDataFetcher切換到不同的線程。

Spring GraphQL 支持將ThreadLocal值從容器線程傳播到線程DataFetcher以及由 GraphQL 引擎調用的其他組件執行。因此,應用程序需要創建一個ThreadLocalAccessorThreadLocal提取生物的值:

公共類 RequestAttributesAccessor 實現 ThreadLocalAccessor {

private static final String KEY = RequestAttributesAccessor.class.getName();

@覆蓋

公共無效提取值(地圖<字符串,對象>容器){

container.put(KEY, RequestContextHolder.getRequestAttributes());

}

@覆蓋

public void restoreValues(Map values) {,>

if (values.containsKey(KEY)) {

RequestContextHolder.setRequestAttributes((RequestAttributes) values.get(KEY));

}

}

@覆蓋

public void resetValues(Map values) {,>

RequestContextHolder.resetRequestAttributes();

}

}

一個ThreadLocalAccessor可以在 WebGraphHandler 構建器中注冊。Boot starter 檢測這種類型的 bean 并自動為 Spring MVC 應用程序注冊它們,請參見 Web Endpoints。

網絡流量

一個反應DataFetcher可以從獲取反應背景下,WebFlux 口頭請求處理鏈。這包括由 WebInterceptor 組件添加的 Reactor 上下文。

異常解決

GraphQL Java 應用程序可以注冊一個DataFetcherExceptionHandler來決定如何在 GraphQL 響應的“錯誤”部分中表示來自數據層的異常。

Spring GraphQL 有一個內置的DataFetcherExceptionHandler,配置為供GraphQLSource構建器使用。它使應用程序注冊一個或多個DataFetcherExceptionResolver順序調用的 Spring 組件,直到將解析Exceptiongraphql.GraphQLError對象列表。

DataFetcherExceptionResolver是一個異步契約。對于大多數實現,這將是悉尼的擴展DataFetcherExceptionResolverAdapter和覆蓋其一個resolveToSingleErrorresolveToMultipleErrors方法是解決異常同步。

AGraphQLError可以分配一個graphql.ErrorClassificationSpring GraphQL 定義了一個ErrorType常見錯誤分類類別的枚舉:

  • BAD_REQUEST

  • UNAUTHORIZED

  • FORBIDDEN

  • NOT_FOUND

  • INTERNAL_ERROR

應用程序可以使用它來分類錯誤。如果它錯誤解決,則默認情況下將標記為INTERNAL_ERROR

未完待續……

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2976

    瀏覽量

    105211
  • spring
    +關注

    關注

    0

    文章

    340

    瀏覽量

    14398
  • GraphQL
    +關注

    關注

    0

    文章

    14

    瀏覽量

    581
收藏 人收藏

    評論

    相關推薦

    校園點餐訂餐外賣跑腿Java源碼

    創建一個校園點餐訂餐外賣跑腿系統是一個復雜的項目,涉及到前端、后端、數據庫設計等多個方面。在這里,我可以提供一個簡化的Java后端示例,使用Spring Boot框架來搭建一個基本的API服務。這個
    的頭像 發表于 12-24 14:55 ?194次閱讀
    校園點餐訂餐外賣跑腿Java源碼

    SSM框架的源碼解析與理解

    SSM框架(Spring + Spring MVC + MyBatis)是一種在Java開發中常用的輕量級企業級應用框架。它通過整合SpringSpring MVC和MyBatis三
    的頭像 發表于 12-17 09:20 ?388次閱讀

    SSM框架的性能優化技巧 SSM框架中RESTful API的實現

    SSM框架的性能優化技巧 SSM(Spring + Spring MVC + MyBatis)框架的性能優化是提升Java Web應用性能的關鍵環節。以下是一些常用的性能優化技巧: 使用緩存
    的頭像 發表于 12-17 09:10 ?296次閱讀

    SSM框架的優缺點分析 SSM在移動端開發中的應用

    SSM框架的優缺點分析 SSM框架,即SpringSpring MVC和MyBatis的整合,是當前比較流行的Java開源框架之一。以下是對SSM框架優缺點的詳細分析: 優點 成本低
    的頭像 發表于 12-16 18:18 ?781次閱讀

    SSM開發環境的搭建教程 SSM與Spring Boot的區別

    SSM開發環境的搭建教程 SSM(Spring+SpringMVC+MyBatis)開發環境的搭建涉及多個步驟,以下是詳細的教程: 創建Maven項目 : 使用Maven工具創建一個新的Maven
    的頭像 發表于 12-16 18:13 ?691次閱讀

    SSM框架在Java開發中的應用 如何使用SSM進行web開發

    SSM框架,即Spring、SpringMVC和MyBatis的整合,是Java Web開發中常用的技術棧。它通過分層架構,實現了視圖、控制、業務邏輯和數據訪問的分離,提高了代碼的可維護性和可擴展性
    的頭像 發表于 12-16 17:28 ?661次閱讀

    Spring 應用合并之路(二):峰回路轉,柳暗花明

    作者:京東科技 李君 書接上文,前面在 Spring 應用合并之路(一):摸石頭過河 介紹了幾種不成功的經驗,下面繼續折騰… 四、倉庫合并,獨立容器 在經歷了上面的嘗試,在同事為啥不搞兩個獨立的容器
    的頭像 發表于 12-12 11:22 ?850次閱讀

    JavaWeb框架比較

    JavaWeb框架為開發人員提供了構建Web應用程序所需的基礎設施和組件,每種框架都有其獨特的特點和適用場景。以下是對幾種主流JavaWeb框架的比較: Spring MVC 優點
    的頭像 發表于 11-25 09:14 ?291次閱讀

    Spring事務實現原理

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

    SpringBean初始化順序

    Spring bean是Spring框架在運行時管理的對象。Spring bean是任何Spring應用程序的基本構建塊。我們編寫的大多數應用程序邏輯代碼都將放在
    的頭像 發表于 11-06 16:04 ?216次閱讀
    SpringBean初始化順序

    Spring Cloud Gateway網關框架

    Spring Cloud Gateway網關框架 本軟件微服務架構中采用Spring Cloud Gateway網關控制框架,Spring Cloud Gateway是Spring C
    的頭像 發表于 08-22 09:58 ?548次閱讀
    <b class='flag-5'>Spring</b> Cloud Gateway網關框架

    vue+spring boot人員定位系統源碼,實現實時定位、智慧調度、軌跡追蹤

    、機具、物料上定位標簽回傳的位置信息數據,采用多維定位模式,精確定位人、機具、物料的實時位置,實現實時定位、物料標簽配置、智慧調度、軌跡追蹤、工時統計、區域物料統計、電子圍欄等應用功能。 技術架構:java+ spring boot+ v
    的頭像 發表于 08-08 14:27 ?885次閱讀
    vue+<b class='flag-5'>spring</b> boot人員定位系統源碼,實現實時定位、智慧調度、軌跡追蹤

    玩轉Spring狀態機

    說起Spring狀態機,大家很容易聯想到這個狀態機和設計模式中狀態模式的區別是啥呢?沒錯,Spring狀態機就是狀態模式的一種實現,在介紹Spring狀態機之前,讓我們來看看設計模式中的狀態模式
    的頭像 發表于 06-25 14:21 ?1040次閱讀
    玩轉<b class='flag-5'>Spring</b>狀態機

    Saturday只是一個枚舉元素啊,而today是一個枚舉變量,為什么他倆所占的內存空間大小是一樣的? [

    #include \"stdio.h\" enum Season { spring, summer=100, fall=96, winter ,winter1
    發表于 05-10 07:07

    SpingBoot的5個擴展點,超級實用!

    我們在啟動Spring Boot項目的時候,是執行這樣一個方法來啟動的
    的頭像 發表于 02-22 11:28 ?566次閱讀
    SpingBoot的5個擴展點,超級實用!
    主站蜘蛛池模板: 天天摸天天干 | 唐人社电亚洲一区二区三区 | 亚洲swag精品自拍一区 | 天天夜夜人人 | 婷婷激情综合网 | 欧美经典三级春潮烂漫海棠红 | 一级毛片一级毛片一级毛片 | 五月网婷婷 | 久久久久久久国产视频 | 久久国产精品免费专区 | 午夜影院在线免费 | 特级一级全黄毛片免费 | 天天射天天干天天舔 | 国产精品夜色一区二区三区 | 精品伊人久久香线蕉 | 亚洲不卡视频在线 | 女人张腿让男桶免费视频观看 | 婷婷六 | 超级碰碰青草免费视频92 | 免费高清成人啪啪网站 | 性欧美高清精品videos | 亚洲第一毛片 | 日毛片| 色综合天天 | 免费高清在线视频色yeye | 亚洲天堂资源 | 色婷婷国产 | xxxxx日本69| 欧美1区 | 天天干天天干天天 | 国卡一卡二卡三免费网站 | 久久久久国产精品免费免费 | 最近在线视频免费观看2019 | 四虎国产精品影库永久免费 | 五月婷婷丁香花 | 日本三级带日本三级带黄首页 | 欧美成人全部免费观看1314色 | 精品国产免费人成高清 | 亚洲免费色视频 | 国产色视频网站 | 亚洲已满18点击进入在线观看 |