概述
springCloudGateway所有的配置都在配置文件里,没有类似@Enablexxx这种使能注解。
自动路由映射配置
server:
port: 8080
spring:
application:
name: spring-cloud-gateway
cloud: # 配置Spring Cloud 相关配置
gateway: # 配置网关相关属性
discovery: # 配置网关发现机制
locator: # 配置定位器处理机制
# 只要请求地址符合规则:http://gatewayIp:gatewayPort/微服务名称/微服务请求地址
# 网关自动映射,把请求地址转发到 http://微服务名称/微服务请求地址
# 示例
# 有微服务:ribbon-app-service
# 请求地址:http://localhost:8080/ribbon-app-service/getArgs?name=admin&age=20
# 自动转发到:http://ribbon-app-service/getArgs?name=admin&age=20
# 上面使用微服务名称转发,对同一个服务名的集群还要负载均衡的作用
# 但是商业开发中,enable一般不设置,使用默认的false,避免不必要的自动转发规则
enabled: true # 开启网关自动映射处理逻辑
lower-case-service-id: true # 开启微服务名称小写转换(大写自动转换为小写,大小写就不敏感了)
手工路由映射配置
server:
port: 8080
spring:
application:
name: spring-cloud-gateway
cloud: # 配置Spring Cloud 相关配置
gateway: # 配置网关相关属性
discovery: # 配置网关发现机制
locator: # 配置定位器处理机制
# 只要请求地址符合规则:http://gatewayIp:gatewayPort/微服务名称/微服务请求地址
# 网关自动映射,把请求地址转发到 http://微服务名称/微服务请求地址
# 示例
# 有微服务:ribbon-app-service
# 请求地址:http://localhost:8080/ribbon-app-service/getArgs?name=admin&age=20
# 自动转发到:http://ribbon-app-service/getArgs?name=admin&age=20
# 上面使用微服务名称转发,对同一个服务名的集群还要负载均衡的作用
# 但是商业开发中,enable一般不设置,使用默认的false,避免不必要的自动转发规则
enabled: false # 关闭网关自动映射处理逻辑
lower-case-service-id: true # 开启微服务名称小写转换(大写自动转换为小写,大小写就不敏感了)
routes: # 配置网关中的一个完整路由,包括命名、地址、谓词集合、过滤器集合
# - 后面跟一个对象
- id: first # 路由定义的命名,唯一即可。命名规则符合java中的变量命名规则
uri: lb://ribbon-app-service # 请求转发到uri定义的地址,当前路由定义对应的微服务转发地址,lb 代表loadbalance负载均衡
# 谓词,命名是有套路的,是GatewayPredicate接口的命名前缀:xxxRoutePredicateFactory
predicates: # 配置谓词集合
- Path=/api/** # 定义一个谓词,格式:谓词名称=参数 或者 name:谓词名称 args:参数
# 配置过滤器的前缀,即xxxGatewayFilterFactory中的xxx
filters: # 配置过滤器集合
# 过滤转发地址前缀,过滤1节
# 如:请求地址:http://localhost:8080/api/getArgs?name=admin&age=20
# 经过谓词:
# 对应的谓词,规则是/api/** ,符合
# 谓词中uri是 lb://ribbon-app-service,所以转换成 http://ribbon-app-service 且包含负载均衡
# 转发地址变成:http://ribbon-app-service/api/getArgs?name=admin&age=20
# 经过过滤器:
# StripPrefix过滤转发地址前缀,过滤1节,即删除/api
# 请求地址变成:http://ribbon-app-service/getArgs?name=admin&age=20
- StripPrefix=1 # 定义一个过滤器,格式:过滤器名称=参数 或者 name:名字 args:参数
谓词
springcloudgateway自带的谓词有:
都是实现了GatewayPredicate接口,我们配置是只需要填写xxxRoutePredicateFactory中的xxx就可以了,gateway会自动匹配补全谓词对象的全名。
过滤器
springCloudGateway自动的过滤器实现:
都实现了GatewayFilter接口,配置的时候只需要写过滤器前缀即可,xxxGatewayFilterFactory,只需要填写xxx即可,gateway会自动补全过滤器全名。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/100288.html