默认情况下 , 网关为使用DiscoveryClient创建的路由定义一个谓词和筛选器 。
默认谓词是使用模式/serviceId/**定义的路径谓词 , 其中serviceId是DiscoveryClient中服务的ID(注册中心注册的服务名称 , 主要就是spring.application.name) 。
默认的过滤器是重写路径过滤器 , regex /serviceId/?(?<remaining> .*)和替换的/${remaining} 。这将在请求发送到下游之前从路径中剥离服务ID 。
如果你想自定义DiscoveryClient路由使用的谓词或过滤器 , 请设置
spring.cloud.gateway.discovery.locator.predicates[x]和
spring.cloud.gateway.discovery.locator.filters[y] 。这样做时 , 如果你希望保留该功能 , 则需要确保包含前面所示的默认谓词和过滤器 。下面的例子展示了它的样子:
spring.cloud.gateway.discovery.locator.predicates[0].name: Pathspring.cloud.gateway.discovery.locator.predicates[0].args[pattern]: "'/'+serviceId+'/**'"spring.cloud.gateway.discovery.locator.predicates[1].name: Hostspring.cloud.gateway.discovery.locator.predicates[1].args[pattern]: "'**.foo.com'"spring.cloud.gateway.discovery.locator.filters[0].name: CircuitBreakerspring.cloud.gateway.discovery.locator.filters[0].args[name]: serviceIdspring.cloud.gateway.discovery.locator.filters[1].name: RewritePathspring.cloud.gateway.discovery.locator.filters[1].args[regexp]: "'/' + serviceId + '/?(?<remaining>.*)'"spring.cloud.gateway.discovery.locator.filters[1].args[replacement]: "'/${remaining}'"
完毕!!!
【Spring Cloud Gateway路由元信息作用及路由超时配置详解】
推荐阅读
- SpringIOC循环依赖问题
- Spring/SpringBoot中的声明式事务和编程式事务源码、区别、优缺点、适用场景、实战
- SpringBoot+Vue+ES 实现仿百度全文搜索
- Spring Statemachine应用实践
- SpringBoot整合RocketMQ,老鸟们都是这么玩的!
- Spring注解@After,@Around,@Before的执行顺序?
- Spring Boot+Nacos+gRPC,一个区别于 OpenFeign 的微服务通信方案!
- 在 SpringBoot 中使用 Spring AOP 实现接口鉴权
- SpringBoot中如何实现限流,这种方式才叫优雅!
- SpringBoot中使用PostgreSQL数据库