当前位置:

java Gateway配置

访客 2024-01-08 322 0

springCloud学习记录

SpringCloudAlibabaGateway(服务网关)

Gateway网关,通过检查请求地址匹配相应的服务请求,访问时直接请求网关的请求地址,会转发到相应的服务;可通过yml文件配置或者代码配置

pom

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>

application.yml(yml配置)

uri:http://localhost:8001固定地址
uri:lb://cloud-payment-service#动态获取对应微服务

server:port:9527spring:application:name:cloud-gatewaycloud:gateway:discovery:locator:enabled:true#开启从注册中心动态创建路由的功能,利用微服务名称j进行路由routes:-id:payment_route#路由的id,没有规定规则但要求唯一,建议配合服务名#匹配后提供服务的路由地址#uri:http://localhost:8001固定地址uri:lb://cloud-payment-service#服务名predicates:#过滤-Path=/payment/get/**#断言,路径相匹配的进行路由-After=2021-11-01T10:01:53.21208:00[Asia/Shanghai]#-Before=2017-01-20T17:42:47.789-07:00[America/Denver]#-Cookie=username,zzyy#-Header=X-Request-Id,\d#请求头要有X-Request-Id属性,并且值为正数#-Host=**.atguigu.com#-Method=GET#-Query=username,\d#要有参数名username并且值还要是正整数才能路由#过滤#filters:#-AddRequestHeader=X-Request-red,blue-id:payment_route2uri:lb://cloud-payment-servicepredicates:Path=/payment/lb/**#断言,路径相匹配的进行路由eureka:instance:hostname:cloud-gateway-serviceclient:fetch-registry:trueregister-with-eureka:trueservice-url:defaultZone:http://eureka7001.com:7001/eureka/

代码文件指定转发的接口(代码配置)

packagecom.atguigu.springcloud.config;importorg.springframework.cloud.gateway.route.RouteLocator;importorg.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassGatewayConfig{@BeanpublicRouteLocatorcustomRouteLocator(RouteLocatorBuilderrouteLocatorBuilder){RouteLocatorBuilder.Builderrouters=routeLocatorBuilder.routes();routers.route("path_route_atguigu",r->r.path("/guonei").uri("http://news.百度.com/guonei")).build();returnrouters.build();}}

配置过滤条件

packagecom.atguigu.springcloud.config.filter;importlombok.extern.slf4j.Slf4j;importorg.springframework.cloud.gateway.filter.GatewayFilterChain;importorg.springframework.cloud.gateway.filter.GlobalFilter;importorg.springframework.core.Ordered;importorg.springframework.http.HttpStatus;importorg.springframework.stereotype.Component;importorg.springframework.web.server.ServerWebExchange;importreactor.core.publisher.Mono;importjava.util.Date;@Component@Slf4jpublicclassMyLogGateWayFilterimplementsGlobalFilter,Ordered{@OverridepublicMono<Void>filter(ServerWebExchangeexchange,GatewayFilterChainchain){log.info("********MyLogGateWayFilter"newDate());Stringuname=exchange.getRequest().getQueryParams().getFirst("uname");if(uname==null){log.info("非法用户");exchange.getResponse().setStatusCode(HttpStatus.NOT_ACCEPTABLE);returnexchange.getResponse().setComplete();}returnchain.filter(exchange);}@OverridepublicintgetOrder(){return0;}}

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~