我的 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 更改为某个前缀,但没有帮助
查看您的 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
属性是默认值,因此如果您不需要它们,可以将其删除。