GraphiQL
GraphiQL 是一個圖形化互動式的瀏覽器內 GraphQL IDE。 它在開發人員中非常受歡迎,因為它可以輕鬆探索和互動式開發 GraphQL API。 在開發期間,標準的 GraphiQL 整合通常足以幫助開發人員處理 API。 在生產環境中,應用程式可能需要客製化的 GraphiQL 建置版本,其中包含公司標誌或特定的驗證支援。
Spring for GraphQL 隨附 一個標準的 GraphiQL index.html
頁面,該頁面使用 unpkg.com CDN 上託管的靜態資源。 Spring Boot 應用程式可以輕鬆地透過設定屬性啟用此頁面。
如果您的應用程式需要不依賴 CDN 的設定,或者您希望自訂使用者介面,則可能需要客製化的 GraphiQL 建置版本。 這可以透過兩個步驟完成
-
設定並編譯 GraphiQL 建置版本
-
透過 Spring Web 基礎架構公開已建置的 GraphiQL 實例
建立客製化的 GraphiQL 建置版本
這部分通常超出本文件範圍,因為客製化建置版本有多種選項。 您可以在官方 GraphiQL 文件中找到更多資訊。 您可以選擇將建置結果直接複製到您的應用程式資源中。 或者,您可以透過利用 Node.js Gradle 或 Maven 建置外掛程式,將 JavaScript 建置版本整合到您專案中的獨立模組。
公開 GraphiQL 實例
一旦 GraphiQL 建置版本在類別路徑上可用,您就可以使用函數式 Web 框架將其公開為端點。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.core.io.ClassPathResource;
import org.springframework.graphql.server.webmvc.GraphiQlHandler;
import org.springframework.web.servlet.function.RouterFunction;
import org.springframework.web.servlet.function.RouterFunctions;
import org.springframework.web.servlet.function.ServerResponse;
@Configuration
public class GraphiQlConfiguration {
@Bean
@Order(0)
public RouterFunction<ServerResponse> graphiQlRouterFunction() {
RouterFunctions.Builder builder = RouterFunctions.route();
ClassPathResource graphiQlPage = new ClassPathResource("graphiql/index.html"); (1)
GraphiQlHandler graphiQLHandler = new GraphiQlHandler("/graphql", "", graphiQlPage); (2)
builder = builder.GET("/graphiql", graphiQLHandler::handleRequest); (3)
return builder.build(); (4)
}
}
1 | 從類別路徑載入 GraphiQL 頁面(在此,我們使用的是 Spring for GraphQL 隨附的版本) |
2 | 設定用於處理 HTTP 請求的 Web 處理器;您可以根據您的使用案例實作客製化的 HandlerFunction |
3 | 最後,將處理器對應到特定的 HTTP 端點 |
4 | 透過 RouterFunction bean 公開此新路由 |
您可能還需要設定您的應用程式以提供相關的靜態資源。