我们在二十三、springCloudAlibaba-gateway初始入门 简单的搭建了gateway项目案例,然后配置里是直接写死服务的ip端口的,这样也太不方便了,正常来说肯定是配置注册到nacos的服务名即可,我们来整合下吧
1、gateway引入nacos依赖
<!--服务注册与发现 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
2、配置文件加上nacos配置
server:port: 8088spring:application:name: api-gatewaycloud:nacos:server-addr: 127.0.0.1:8848discovery:username: nacospassword: nacosnamespace: public#gateway配置gateway:#路由规则routes:- id: order_route # 路由的唯一标识uri: lb://order-service #需要转发的地址.lb本地负载均衡策略#断言规则 用于路由规则的匹配predicates:- Path=/order-service/**#匹配请求http://localhost:8088/order-service/order/add#过滤器 用于过滤请求filters:- StripPrefix=1 #转发之前去掉第一层路径#http://localhost:8010/order/add#- id: stock_route
然后路由规则只需要简单修改uri为
lb://order-service
即可,order-service对应的就是订单在nacos注册的服务名。
通过请求测试发现是ok的。
3、约定大于配置的方式(不建议使用)
假如我们的断言Path里面的路径跟服务名一样,那么我们的路由,断言,过滤都可以不用配置,改为如下即可
gateway:discovery:locator:enabled: true #是否自动识别nacos服务
也就是约定大于配置,但是正常这种模式不会用,自由度和阅读性较低!
