Gateway 搭建 - 教程
1.创建 moudle 命名为 gateway
2,pom中引入依赖 网关依赖;注册中心依赖等
org.springframework.cloud spring-cloud-starter-gateway com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery org.springframework.cloud spring-cloud-starter-loadbalancer
创建启动类
配置yml文件
spring: application: name: gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848server: port: 80
测试 启动成功
配置请求分发路径
spring: application: name: gateway cloud: nacos: discovery: server-addr: 127.0.0.1:8848 gateway: routes: - id: order-route # 路由名称 uri: lb://order # 路由要转发的服务 格式为固定的 lb:// 服务名 predicates: # 断言 - Path=/api/order/** # 路径为 /api/order/** 的请求专项order服务 - id: product-route uri: lb://product predicates: - Path=/api/product/**
网关路径重写示例:
例如:请求的全路径为 /api/order/getOrder经过网关后 将请求地址省略为 /getOrder
filters:
- RewritePath=/red/?(?.*),/$\{segment}
自定义网关全局过滤器
package gateway.filter; import org.springframework.cloud.gateway.filter.GatewayFilterChain;import org.springframework.cloud.gateway.filter.GlobalFilter;import org.springframework.core.Ordered;import org.springframework.http.server.reactive.ServerHttpRequest;import org.springframework.http.server.reactive.ServerHttpResponse;import org.springframework.stereotype.Component;import org.springframework.web.server.ServerWebExchange;import reactor.core.publisher.Mono; //自定义全局过滤器@Componentpublic class RtGlobalFiler implements GlobalFilter, Ordered { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request = exchange.getRequest(); ServerHttpResponse response = exchange.getResponse(); String string = request.getURI().toString(); System.out.println("当前操作时间"+System.currentTimeMillis()+"操做的地址:"+string); Mono doFinally = chain.filter(exchange).doFinally((result) -> { System.out.println("当前操作的结束时间" + System.currentTimeMillis()); }); return doFinally; } @Override public int getOrder() { return 0; }}
gateway yml 跨域配置
请求效果