我正在尝试配置Spring-Cloud-Gateway。
基本目标是为包含其他服务的其他服务添加路由
/some-api/** -> http://some-api/**
/some-other-api/** -> http://some-other-api.com/**
现在唯一可行的配置就是这个。
spring:
cloud:
gateway:
routes:
- id: some-api
uri: https://some-api.com
predicates:
- Path=/some-api/**
filters:
- StripPrefix=1 # REQUIRED?
- id: some-other-api
uri: https://some-other-api.com
predicates:
- Path=/some-other-api/**./g
filters:
- StripPrefix=1 # REQUIRED?
我的问题是需要- StripPrefix=1
行吗?
当我注释掉它们时,路线不起作用。
原始服务获得诸如这样的前缀请求。
/some-api/swagger-ui.html -> http://some-api.com/some-api/swagger-ui.html
应该是
/some-api/swagger-ui.html -> http://some-api.com/swagger-ui.html
答案 0 :(得分:1)
是的。
Comment.find(id).user
剥离请求路径的一部分,然后再向下游发送。请检查user_id
。
https://cloud.spring.io/spring-cloud-gateway/reference/html/#_stripprefix_gatewayfilter_factory
如果您的请求路径为StripPrefixGatewayFilterFactory
,而配置为StringPrefixGatewayFilterFactory
,则StripPrefixGatewayFilterFactory将剥离请求路径的一部分。在这种情况下,剥离的部分为/some-api/swagger-ui.html
。
要使其按您希望的方式工作,您必须剥离请求路径的一部分。