此版本仍在开发中,尚未被视为稳定版本。最新的稳定版本请使用 Spring GraphQL 1.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。最新的稳定版本请使用 Spring GraphQL 1.3.1Spring中文文档

GraphiQL 是一个图形交互式浏览器内 GraphQL IDE。 它在开发人员中非常受欢迎,因为它可以轻松探索和交互式开发 GraphQL API。 在开发过程中,一个普通的 GraphiQL 集成通常足以帮助开发人员处理 API。 在生产环境中,应用程序可能需要自定义 GraphiQL 版本,该版本附带公司徽标或特定身份验证支持。Spring中文文档

Spring for GraphQL 附带了一个库存的 GraphiQL index.html页面,该页面使用托管在 unpkg.com CDN 上的静态资源。 Spring Boot 应用程序可以使用配置属性轻松启用此页面Spring中文文档

如果应用程序需要不依赖 CDN 的设置,或者你希望自定义用户界面,则可能需要自定义 GraphiQL 版本。 这可以通过两个步骤完成:Spring中文文档

  1. 配置和编译 GraphiQL 构建Spring中文文档

  2. 通过 Spring Web 基础结构公开构建的 GraphiQL 实例Spring中文文档

创建自定义 GraphiQL 构建

这部分通常不在本文档的讨论范围之内,因为自定义生成有多个选项。 您可以在官方 GraphiQL 文档中找到更多信息。 您可以选择直接在应用程序资源中复制生成结果。 或者,您可以利用 GradleMaven 构建插件,将项目中的 JavaScript 构建集成Node.js为单独的模块。Spring中文文档

公开 GraphiQL 实例

一旦 GraphiQL 构建在类路径上可用,您就可以将其公开为具有功能性 Web 框架的端点。Spring中文文档

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 通过 Bean 公开此新路由RouterFunction

您可能还需要将应用程序配置为提供相关的静态资源Spring中文文档

1 从类路径加载 GraphiQL 页面(这里,我们使用的是 Spring for GraphQL 附带的版本)
2 配置用于处理 HTTP 请求的 Web 处理程序;您可以根据您的用例实现自定义HandlerFunction
3 最后,将处理程序映射到特定的 HTTP 终结点
4 通过 Bean 公开此新路由RouterFunction