码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Gateway基础知识


    文章目录

    • Spring Cloud GateWay 用法
      • 核心概念
      • 请求流程
      • 两种配置方式
      • 设置日志(建议设置)
      • 路由的各种断言
      • 断言
        • The After Route Predicate Factory
        • The Before Route Predicate Factory
        • The Between Route Predicate Factory
        • The Cookie Route Predicate Factory
      • img
        • The Method Route Predicate Factory
        • (客户端访问地址)The Path Route Predicate Factory
        • The Query Route Predicate Factory
        • The RemoteAddr Route Predicate Factory
        • 发布控制 The Weight Route Predicate Factory
        • The XForwarded Remote Addr Route Predicate Factory
        • The Header Route Predicate Factory
        • The Host Route Predicate Factory
      • 过滤器
        • The AddRequestHeader GatewayFilter Factory
      • 小demo
        • 1.引入依赖
        • 2.写配置文件
        • 运行访问

    Spring Cloud GateWay 用法

    网关,类似于所有接口前面的一堵墙,统一来处理用户发起的请求,比如火车站售票前台。

    关键是统一,起到路由,安全性等等。

    官网:https://spring.io/projects/spring-cloud-gateway

    官方文档:https://docs.spring.io/spring-cloud-gateway/docs/current/reference//html/

    实例代码:https://spring.io/projects/spring-cloud-gateway#samples

    核心概念

    img

    1. 路由 (根据条件,进行url转发)
    2. 断言(一组规则,条件,用来确定如何转发路由)
    3. 过滤器:对请求进行一系列的处理,比如添加请求头,添加请求参数

    请求流程

    client:客户端发起请求

    handler Mapping :根据断言,将请求转发到对应的路由

    web handler:处理请求,一层层的经过过滤器:例如可以用于鉴权,限流等等

    最后调用实际的服务

    img

    两种配置方式

    1. 配置式(推荐,方便,规范)
    • 简化版

    img

    • 全称

    img

    1. 编程式(灵活、自由)

    设置日志(建议设置)

    设置了日志就可以知道请求什么开始断言转发到哪里了。

    logging:
       level:
          org:
            springframework:
              cloud:
                 gateway: trace
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    路由的各种断言

    断言

    1. After在x时间之后
    2. Before在x时间之前
    3. Between在x时间之间
    4. 请求类别
    5. 请求头(包含Cookie)
    6. 查询参数
    7. 客户端地址
    8. 权重(用于实现发布控制)

    The After Route Predicate Factory

    img

    The Before Route Predicate Factory

    当前时间在这个时间之前,就会访问当前这个路由

    img

    The Between Route Predicate Factory

    当前时间在这个时间之间,就会访问当前这个路由

    img

    The Cookie Route Predicate Factory

    img

    The Method Route Predicate Factory

    如果你的请求类别是这个post,get,就会访问当前这个路由

    img

    (客户端访问地址)The Path Route Predicate Factory

    如果你的访问的地址是以这些/red/{segment},/blue/{segment}路径作为前缀,就会访问当前这个路由

    spring:
      cloud:
        gateway:
          routes:
          - id: path_route
            uri: https://example.org
            predicates:
            - Path=/red/{segment},/blue/{segment}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    The Query Route Predicate Factory

    根据查询条件,比如?green,就会访问当前这个路由

    img

    The RemoteAddr Route Predicate Factory

    根据远程地址,比如你的用户的ip地址是192.168.1.1/24,就会访问当前这个路由

    img

    发布控制 The Weight Route Predicate Factory

    根据你设置的权重,给你把同一个访问的地址,重定到不同的服务,轻松实现发布控制

    img

    The XForwarded Remote Addr Route Predicate Factory

    从请求头中如果拿到XForwarded这个请求头的地址192.168.1.1/24,,就会访问当前这个路由 请求染色

    img

    The Header Route Predicate Factory

    如果你的请求头包含X-Request-Id这样一个请求头,并且,它的值符合正则表达式的规则,就会访问当前这个路由

    img

    The Host Route Predicate Factory

    如果你的访问的是这个.somehost.org,.anotherhost.org,域名,就会访问当前这个路由

    过滤器

    基本功能:对请求头、请求参数、响应头的增删改查

    1.添加清求头

    2.添加请求参数

    3.添加响应头

    4.降级

    5.限流

    6.重试

    降级:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#spring-cloud-circuitbreaker-filter-factory

    The AddRequestHeader GatewayFilter Factory

    增加请求头

    img

    小demo

    创建SpringBoot项目

    1.引入依赖

    gateway

    lombok

    2.写配置文件

    server:
      port: 8090
    
    spring:
      cloud:
        gateway:
          routes:
            - id: path_route
              uri: https://www.codefather.cn/
              predicates:
                - Path=/**
    
    
    logging:
      level:
        org:
          springframework:
            cloud:
              gateway: trace
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    运行访问

    地址访问 localhost:8090,就会跳转到 codefather.cn

    我是小辉,24 届应届毕业生。当下是找工作ing,持续分享,包括不限于技术文章。全网同名…

  • 相关阅读:
    C++ STL容器底层实现原理
    Java 第二阶段提升编程能力【坦克大战3.0】
    云计算-Linux-软链接与硬链接,获取命令帮助,系统运行级别,关机和重启
    410-C++之STL模板库(9-11)
    【Educoder作业】C&C++指针实训
    SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.10 MongoDB 基础操作
    【项目开发 | C语言项目 | C语言病人管理系统】
    数组扁平化(es6)
    mapreduce搭建
    Ubuntu2004字体不清晰,排查流程
  • 原文地址:https://blog.csdn.net/m0_64372868/article/details/138195770
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号