项目用到了Gateway 作为网关,网关的相关使用场景很值得了解,还有路由配置。今天就来记录一下。

开启基于注册中心的路由表。gateway可以通过开启以下配置来打开根据服务的serviceId来匹配路由,默认是大写:
cloud:
  gateway:
    discovery:
      locator:
        enabled: true

如果需要小写serviceId,则配置

spring.cloud.gateway.locator.lowerCaseServiceId:true

注意事项

不管小写大写,不能使用下划线,否则会报:
org.springframework.cloud.gateway.support.NotFoundException: Unable to find instance for localhost
所以服务的spring.application.name 必须用中划线而不是下划线
如果开启了lowerCaseServiceId,则只能用小写,不能识别大写,如果不开启,只能识别大写

 

也可以手动设置,在routes中配置 配置对应的类

这是每个路由信息的属性, 对应着.yml配置文件

可以看到 id 如果不写的话默认是uuid 唯一值。不可重复,

 uri指需要跳转的地址, 这里的uri不是一个具体的地址了,而是lb://开头,加上serviceId

Predicates就是上面说的谓语了,可以配置多个,使用正则匹配. 

请求地址携带/auth则会跳转到我们配置的uri

这个是过滤器,对应的是filters 配置,有写好的过滤器,应该也可以自定义,

这里会先进行Predicates 判断,为true  如果有filters则进行相关过滤。之后再转发的相关服务。

更多的Predicates、filters操作

还有其他的predicate, filters可以参考官方文档

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐