有没有办法使用spring boot starter app graphql-spring-boot-starter公开2个graphql端点?
Posted
技术标签:
【中文标题】有没有办法使用spring boot starter app graphql-spring-boot-starter公开2个graphql端点?【英文标题】:Is there a way to expose 2 graphql endpoints using spring boot starter app graphql-spring-boot-starter? 【发布时间】:2020-09-23 21:01:08 【问题描述】:目前我们正在使用
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>$graphql-spring-starter.version</version>
</dependency>
这样,我们将使用 /graphql 端点公开我们的 graphql API。我想有多个像这样的端点,/graphql1 和 /graphql2,这样我就可以根据端点定义不同的响应格式。最好的方法是什么?任何意见都非常感谢。
【问题讨论】:
【参考方案1】:归结为创建一个GraphQLHttpServlet
并配置其上下文路径。在封面下,它使用自动配置GraphQLWebAutoConfiguration
将GraphQLHttpServlet
定义为一个bean,并将上下文路径配置为/graphql
。
这意味着您可以参考GraphQLWebAutoConfiguration
的工作方式并创建另一个注册到其他上下文路径的GraphQLHttpServlet
实例。
主要的一点是,要在 spring boot 中注册一个 Servlet
,您可以简单地创建一个 ServletRegistrationBean
来包装您要创建的 HttpServlet
。有关详细信息,请参阅 docs。
一个简单的例子是:
@Bean
public ServletRegistrationBean<AbstractGraphQLHttpServlet> fooGraphQLServlet()
//Create and configure the GraphQL Schema.
GraphQLSchema schema = xxxxxxx;
GraphQLHttpServlet graphQLHttpServlet = GraphQLHttpServlet.with(schema);
ServletRegistrationBean<AbstractGraphQLHttpServlet> registration = new ServletRegistrationBean<>(
graphQLHttpServlet, "/graphql2/*");
registration.setName("Another GraphQL Endpoint");
return registration;
【讨论】:
cors 设置怎么样?以上是关于有没有办法使用spring boot starter app graphql-spring-boot-starter公开2个graphql端点?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法正确集成两个(或更多)Spring-Boot 项目?
有没有办法在 Spring Boot 应用程序配置中使用 Spring Cloud cipher?
有没有办法使用 Spring Boot 自动配置注册存储库基类?
有没有办法在 Spring Boot 中获取所有配置属性的名称?