Spring for GraphQL 1.0.0-M5 版本發布

版本發布 | Brian Clozel | 2022 年 1 月 19 日 | ...

謹代表團隊及所有貢獻者,我很高興宣布 Spring for GraphQL 1.0.0-M5 現在可從 https://repo.spring.io/milestone 取得。

M5 版本是繼 12 月功能豐富的 M4 版本之後的快速跟進。M5 的主要目標是在本週四第一個 Spring Boot 2.7 里程碑之前,將 Boot starter 從 Spring GraphQL 儲存庫移至 Spring Boot proper。除此之外,一如既往,也有大量的反饋導致了一些改進和修復。

Spring Boot GraphQL Starter

GraphQL starter 已經從 Spring for GraphQL 專案儲存庫移至 Spring Boot 儲存庫,並將在 即將推出的 2.7.0-M1 版本中提供。 這是 Spring Boot 文件中的 GraphQL 區段

為了使體驗更容易,starter 現在也可以在 start.spring.io 上使用 - 試試這個連結來建立您自己的 GraphQL 應用程式!

Web 攔截

WebInterceptor 實例攔截透過 HTTP 或 WebSocket 的 GraphQL 請求。 它允許取得有關 HTTP 請求或 WebSocket 握手的信息,並自定義 ExecutionInputExecutionResult

這對於 GraphQL 的常見用例很有用,例如

  • 從 HTTP 請求中取得資料並將其添加到 GraphQLContext
  • 在請求之後從 GraphQLContext 取得資訊並公開 HTTP 回應標頭。

在此版本中,從一開始就提供的 WebInputWebOutput 類型已經過審查和重構,使其更易於使用。 具體目標是確保容易存取 inbound 和 outbound 攔截的 GraphQLContext。 所以您現在可以執行以下操作

public class CustomHeaderWebInterceptor implements WebInterceptor {

	@Override
	public Mono<WebOutput> intercept(WebInput input, WebInterceptorChain chain) {
		return chain.next(input).doOnNext(output -> {
			GraphQLContext context = output.getExecutionInput().getGraphQLContext();
			String value = context.get("...");
			webOutput.getResponseHeaders().set("Custom-Header", value);
		});
	}
}

ExecutionId

關於 Web 攔截,現在也可以更輕鬆地從 WebInterceptor 為 GraphQL 請求設定 ExecutionId

在 GraphQL Java 中,可以使用唯一的 ExecutionId 標記每個請求,預設情況下它是 UUID。 在 Spring for GraphQL 中,我們連接到 Web 傳輸層 id,例如 WebFlux requestId,這可以更輕鬆地將日誌訊息與 Web 傳輸相關聯。

但是,我們也進行了一些更改,以便更輕鬆地透過 WebInterceptor 自定義 ExecutionId,現在也可以在 graphq.GraphQL 中配置您自己的 ExecutionIdProvider,它將覆蓋 Spring GraphQL 中使用的預設 id。

Querydsl 和 Query By Example 自動註冊

此版本改進了對標註了 @GraphQlRepository 的 Spring Data 儲存庫執行 Querydsl 和 Query by Example 的自動註冊的方式。 挑戰的根源在於只有在沒有為該欄位註冊 DataFetcher 並且有多種註冊方式時才應應用自動註冊,以及修飾它們,就像某些第三方函式庫所做的那樣,這可能會干擾自動註冊。

在這個里程碑中,我們已從使用 Schema TypeVisitor 切換到使用 WiringFactory 進行自動註冊。 這應該提供一個更穩定的機制,可以在各種情境中以及與其他函式庫一起更好地工作。

如果您想了解有關 Querydsl 和 Query by Example 支援的更多資訊,請查看 文件

GraphiQL WebSocket 支援

Spring for GraphQL 附帶 一個簡單的 GraphiQL 整合; 此工具不僅在開發時對於製作查詢和測試我們正在建構的 API 很有用,而且對於客戶端開發人員來說,也是探索 API 的一種好方法。

雖然我們認為對於更具體的需求,應用程式應該建構自己的頁面,但我們已經改進了我們的預設體驗以包括 WebSocket 支援。 您現在可以在 GraphiQL UI 中透過 WebSocket 測試訂閱!

更多

更多 改進和修復已添加到此版本中,它們現在可從 Spring 里程碑儲存庫中的新 Spring for GraphQL 1.0.0-M5 版本中獲得。

您可以如何幫助?

如果您有興趣提供幫助,您可以 開始使用 Spring GraphQL 並在我們的 GitHub 專案上提出問題。 如果您有一般問題,請使用 spring-graphql 標籤stackoverflow.com 上提問。

專案頁面 | GitHub | 問題 | 文件 | Stack Overflow

取得 Spring 電子報

隨時關注 Spring 電子報

訂閱

領先一步

VMware 提供培訓和認證,以加速您的進度。

了解更多

取得支援

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進制檔案。

了解更多

即將舉辦的活動

查看 Spring 社群中所有即將舉辦的活動。

檢視全部