官网地址:https://docs.spring.io/spring-cloud-gateway/docs/4.0.4/reference/html/
1.网关入门 helloword
网关不依赖start-web
导入的pom:
<!--gateway-->
<dependency>
<groupIdorg.springframework.cloud</groupId>
<artifactIdspring-cloud-starter-gateway</artifactId>
<exclusions>
<exclusion>
<groupIdorg.springframework.boot</groupId>
<artifactIdspring-boot-starter-web</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupIdcom.alibaba.cloud</groupId>
<artifactIdspring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 指标监控健康检查的actuator,网关是响应式编程删除掉spring-boot-starter-web dependency-->
<dependency>
<groupIdorg.springframework.boot</groupId>
<artifactIdspring-boot-starter-actuator</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupIdorg.projectlombok</groupId>
<artifactIdlombok</artifactId>
<version1.18.28</version>
<scopeprovided</scope>
配置文件:
server:
port: 8085
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
#路由的ID(类似mysql主键ID),没有固定规则但要求唯一,建议配合服务名
- id: order-service
#匹配后提供服务的路由地址
uri: http://localhost:8081/
#uri: http://cloud-payment-service #匹配后提供服务的路由地址
# 断言,路径相匹配的进行路由
predicates:
- Path=/order/getOrder
直接访问网关服务+网关端口-》
http://localhost:8085/order/getOrder
最后服务转发到8081服务对应的接口上
2.使用服务名的方式调用网关
正常我们会使用服务名的方式进行服务间的调用
不会使用端口号的形式,不然端口号的变更很难维护
变更配置文件
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
变更配置文件
server:
port: 8085
spring:
application:
name: gateway-service
cloud:
gateway:
routes:
#路由的ID(类似mysql主键ID),没有固定规则但要求唯一,建议配合服务名
- id: order-service
#匹配后提供服务的路由地址
uri: lb://order-service
#uri: http://cloud-payment-service #匹配后提供服务的路由地址
# 断言,路径相匹配的进行路由
predicates:
- Path=/order/getOrder
3.常用的内置Route Predicate
是什么?
Spring Cloud Gateway包含许多内置的路由谓词工厂。 所有这些谓词都匹配HTTP请求的不同属性。 您可以使用逻辑 a