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 跨域配置

请求效果

posted @ 2025-07-24 13:49  yjbjingcha  阅读(18)  评论(0)    收藏  举报