Graphql 请求不是由 graphql 提供服务,而是由一般 Spring Rest 提供服务

问题描述 投票:0回答:1

我的 Spring Boot 应用程序公开了不同 API 集的 Rest 和 graphql 端点。 Rest 端点工作正常,但 graphql 请求也被视为休息并抛出 404,因为它试图将它们作为静态资源提供服务。

没有静态资源 my-service/graphql

stack_trace:org.springframework.web.servlet.resource.NoResourceFoundException:没有静态资源 my-service/graphql。 在org.springframework.web.servlet.resource.ResourceHttpRequestHandler.handleRequest(ResourceHttpRequestHandler.java:585)

我的 application.properties 中有以下配置

spring.application.name=my-service
server.port=8080
server.tomcat.mbeanregistry.enabled=true
server.http2.enabled=true

management.server.port=9090
management.endpoints.web.exposure.include=health,prometheus
management.endpoint.health.probes.enabled=true
management.health.livenessState.enabled=true
management.health.readinessState.enabled=true

spring.config.import=

spring.cloud.openfeign.okhttp.enabled=true

spring.graphql.graphiql.enabled=true
spring.graphql.graphiql.path=/graphiql
spring.graphql.schema.printer.enabled=true
spring.graphql.path=/graphql

spring.graphql.schema.locations=classpath*:graphql/**/


apollo.url=
apollo.hiveUsageClientName=my-service
apollo.hiveUsageClientVersion=1.0

高度赞赏有关此问题的任何见解。预先感谢您。

我有 kubernets 入口配置来将请求路由到此服务。尝试尝试将应用程序的默认 servlet.context.path 更改为某个前缀,但没有帮助

spring-boot kubernetes-ingress spring-rest spring-cloud-feign spring-graphql
1个回答
0
投票

查看您的 application.properties 和您的请求,您正在使用路径

my-service/graphql
但您从未将上下文路径设置为 my-service。设置应用程序名称不会自动更改您的上下文路径。

从您当前的设置来看,假设您只是使用 spring-graphql,那么路径应该是

http://localhost:8080/graphql

如果您使用 MVC,那么您可以通过添加属性

server.servlet.context-path=my-service
来更改上下文路径。

另外,顺便提一下,您设置的

spring.graphql.path
spring.graphql.graphqli.path
属性是默认值,因此如果您不需要它们,可以将其删除。

© www.soinside.com 2019 - 2024. All rights reserved.