SpringCloud Gateway笔记整理

server/2024/9/22 14:50:06/
  1. actuator配置, 访问http://localhost:9999/actuator/gateway/routes查看路由信息
    management.endpoint.gateway.enabled=true
    management.endpoints.web.exposure.include=gateway
    
  2. logger配置
    logging.level.org.springframework.cloud.gateway=trace
    logging.level.org.springframework.http.server.reactive=debug
    logging.level.org.springframework.web.reactive=debug
    logging.level.reactor.ipc.netty=debug
    
  3. 路由配置
    # 访问http://localhost:9999/jd时,会转发到https://www.jd.com/
    spring.cloud.gateway.routes[0].id=jd_route
    spring.cloud.gateway.routes[0].uri=https://www.jd.com/
    spring.cloud.gateway.routes[0].predicates[0]=Path=/jd
    

自定义GatewayFilter

  1. 实现GatewayFilter接口
    @Component
    public class CustomGatewayFilterFactoryextends AbstractNameValueGatewayFilterFactory implements Ordered {private static final String COUNT_START_TIME = "count_start_time" ;@Overridepublic GatewayFilter apply(NameValueConfig config) {return (exchange, chain) -> {exchange.getAttributes().put(COUNT_START_TIME, System.currentTimeMillis()) ;return chain.filter(exchange).then(Mono.fromRunnable(() ->{Long startTime = exchange.getAttribute(COUNT_START_TIME);if (startTime != null){long endTime = System.currentTimeMillis() - startTime ;log.info(exchange.getRequest().getURI().getRawPath() + ": " + endTime + "ms");}}));};}@Overridepublic int getOrder() {return Ordered.LOWEST_PRECEDENCE ;}
    }
    
  2. 配置过滤器
    spring.cloud.gateway.routes[0].id=jd_route
    spring.cloud.gateway.routes[0].uri=https://www.jd.com/
    spring.cloud.gateway.routes[0].predicates[0]=Path=/jd
    spring.cloud.gateway.routes[0].filters[0]=Custom=name,test
    

自定义GlobalFilter

  1. 实现GlobalFilter接口
    @Component
    public class AuthSignatureFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {String token = exchange.getRequest().getQueryParams().getFirst("token");if (StringUtils.isBlank(token)){// 如果token为空,则返回401exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}return chain.filter(exchange);}@Overridepublic int getOrder() {return -400;}
    }
    
  2. 访问:http://localhost:9999/jd?token=123正常跳转到https://www.jd.com/

其他

  1. 执行流程
    HttpWebHandlerAdapter
    DispatcherHandler
    RoutePredicateHandlerMapping
    FilteringWebHandler
    
  2. 内置10个global 过滤器
    RemoveCachedBodyFilter
    AdaptCachedBodyGlobalFilter
    NettyWriteResponseFilter
    ForwardPathFilter
    RouteToRequestUrlFilter
    ReactiveLoadBalancerClientFilter
    LoadBalancerServiceInstanceCookieFilter
    WebsocketRoutingFilter
    NettyRoutingFilter
    ForwardRoutingFilter
    

http://www.ppmy.cn/server/120324.html

相关文章

PostgreSQL常用表操作SQL脚本整理

标题 查看 PostgreSQL表字段信息包括 名称&#xff0c;数据类型&#xff0c;精度&#xff0c;注释等信息查看数据库中的 schemas查看特定 schema 中的所有表查看指定表所有列的信息&#xff1a;查看主键信息&#xff1a;查看索引信息&#xff1a; 创建库表模板修改表信息修改表…

IDEA 24.1 could not autowire. No beans of ‘***‘ type found. 取消 某个类型的 警告

一.问题描述 Idea的spring中&#xff0c;经常会遇到Could not autowire. No beans of xxxx type found的错误提示。但程序的编译和运行都是没有问题的。爆红看着总让人难受。 二、解决问题 找到如上位置&#xff1a; 1、&#xff08;不推荐&#xff09;在file中找到如下位置&a…

Canvas简历编辑器-Monorepo+Rspack工程实践

Canvas简历编辑器-MonorepoRspack工程实践 在之前我们围绕Canvas聊了很多代码设计层面的东西&#xff0c;在这里我们聊一下工程实践。在之前的文中我也提到过&#xff0c;因为是本着学习的态度以及对技术的好奇心来做的&#xff0c;所以除了一些工具类的库例如 ArcoDesign、Re…

C# WPF 为何能成为工控上位机开发的首选

C# WPF&#xff08;Windows Presentation Foundation&#xff09;因其强大的功能和灵活性&#xff0c;成为了工控上位机开发的首选技术之一。WPF提供了丰富的控件、图形和动画效果&#xff0c;以及与硬件设备的交互能力&#xff0c;非常适合用来构建复杂的工业自动化和监控系统…

论文笔记:交替单模态适应的多模态表征学习

整理了CVPR2024 Multimodal Representation Learning by Alternating Unimodal Adaptation&#xff09;论文的阅读笔记 背景MLA框架实验Q1 与之前的方法相比&#xff0c;MLA能否克服模态懒惰并提高多模态学习性能?Q2 MLA在面临模式缺失的挑战时表现如何?Q3 所有模块是否可以有…

增强LinkedList实现瑞士轮赛制编排

前言 LinkedList底层虽然是基于链表实现&#xff0c;但是由于其对底层节点进行了封装&#xff0c;导致无法操作底层Node对象。这也为使用上带来了很多不便&#xff0c;比如我之前遇到的一个需求&#xff1a;将n个队伍按照瑞士轮进行编排&#xff0c;组成n/2个队伍&#xff0c;…

Spring Boot- 配置中心问题

Spring Boot 配置中心相关问题探讨 在现代微服务架构中&#xff0c;随着系统规模的扩展和复杂度的增加&#xff0c;配置管理变得越来越重要。每个微服务都可能有大量的配置文件&#xff0c;包括数据库连接信息、缓存配置、消息队列配置等。如果每个服务独立管理配置文件&#…

Linux 系统

CSP初赛知识点&#xff1a;Linux 系统 前言 近年 CSP 初赛几乎前 5 道选择题都有一两道有关 Linux 系统的使用&#xff0c;所以作为备战 CSP-J/S 2024 的资料&#xff0c;整理下来啦。 祝各位今年所有考试都能考出自己满意的成绩&#xff01; 1、常用文件操作命令 以下设文…