領先一步
VMware 提供培訓和認證,以加速您的進度。
了解更多謹代表團隊及所有貢獻者,我很高興宣布 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。除此之外,一如既往,也有大量的反饋導致了一些改進和修復。
GraphQL starter 已經從 Spring for GraphQL 專案儲存庫移至 Spring Boot 儲存庫,並將在 即將推出的 2.7.0-M1 版本中提供。 這是 Spring Boot 文件中的 GraphQL 區段。
為了使體驗更容易,starter 現在也可以在 start.spring.io 上使用 - 試試這個連結來建立您自己的 GraphQL 應用程式!
WebInterceptor
實例攔截透過 HTTP 或 WebSocket 的 GraphQL 請求。 它允許取得有關 HTTP 請求或 WebSocket 握手的信息,並自定義 ExecutionInput
和 ExecutionResult
。
這對於 GraphQL 的常見用例很有用,例如
GraphQLContext
。GraphQLContext
取得資訊並公開 HTTP 回應標頭。在此版本中,從一開始就提供的 WebInput
和 WebOutput
類型已經過審查和重構,使其更易於使用。 具體目標是確保容易存取 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);
});
}
}
關於 Web 攔截,現在也可以更輕鬆地從 WebInterceptor
為 GraphQL 請求設定 ExecutionId
。
在 GraphQL Java 中,可以使用唯一的 ExecutionId
標記每個請求,預設情況下它是 UUID。 在 Spring for GraphQL 中,我們連接到 Web 傳輸層 id,例如 WebFlux requestId,這可以更輕鬆地將日誌訊息與 Web 傳輸相關聯。
但是,我們也進行了一些更改,以便更輕鬆地透過 WebInterceptor
自定義 ExecutionId
,現在也可以在 graphq.GraphQL
中配置您自己的 ExecutionIdProvider
,它將覆蓋 Spring GraphQL 中使用的預設 id。
此版本改進了對標註了 @GraphQlRepository
的 Spring Data 儲存庫執行 Querydsl 和 Query by Example 的自動註冊的方式。 挑戰的根源在於只有在沒有為該欄位註冊 DataFetcher
並且有多種註冊方式時才應應用自動註冊,以及修飾它們,就像某些第三方函式庫所做的那樣,這可能會干擾自動註冊。
在這個里程碑中,我們已從使用 Schema TypeVisitor
切換到使用 WiringFactory
進行自動註冊。 這應該提供一個更穩定的機制,可以在各種情境中以及與其他函式庫一起更好地工作。
如果您想了解有關 Querydsl 和 Query by Example 支援的更多資訊,請查看 文件。
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