微服务组件Gateway的学习

Gateway

Gateway基础概念

API网关指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑,可以在这里实现,诸如认证、鉴权、监控、路由转发等。
路由

路由是网关中最基础的部分,路由信息包括一个ID、一个目的URI、一组断言工厂、一组Filter组成。如果断言为真,则说明请求的URL和

配置的路由匹配。
断言

断言函数允许开发者去定义匹配Http request中的任何信息,比如请求头和参数等。
过滤器

分为全局过滤器和局部过滤器。Filter可以对请求和响应进行处理。

Gateway简单使用

导入依赖

xml 复制代码
		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

配置yml文件

yaml 复制代码
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      #路由规则
      routes:
        -id: order_route #路由的唯一标识 路由到order
        uri: http://localhost:8044 #需要转发的地址
        ##断言规则  用于路由规则的匹配  路由转发的条件
        predicates:
          - Path=/login
        filters:
          - StripPrefix=1  #转发之前去掉第一层路径

Gateway路由工厂

当请求gateway的时候, 使用断言对请求进行匹配, 如果匹配成功就路由转发, 如果匹配失败就返回404。例如上面代码中的-Path就是内置路由工厂之一。还有基于Datetime类型的断言工厂、基于远程地址的断言工厂等等。

yaml 复制代码
‐ After=2023‐12‐18T23:59:59.789+08:00[Asia/xian]
‐ Method=GET
......

Gateway过滤器

Gateway内置许多的过滤器工厂,通过一些过滤器工厂可以进行一些业务逻辑处理器,比如添加剔除响应头,添加去除参数等。

yaml 复制代码
filters:
‐ AddRequestHeader=X‐Request‐color, red #添加请求头
‐ AddRequestParameter=color, blue # 添加请求参数
‐ PrefixPath=/mall‐order # 添加前缀 对应微服务需要配置context‐path

若使用PrefixPath,需要在mall‐order中配置

yaml 复制代码
server:
 servlet:
 context‐path: /mall‐order
 ##http://localhost:8888/order/findByUserId ====》 http://localhost:8020/mall­order/order/findByUserId

Gateway跨域配置

yaml 复制代码
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      globalcors:
        core-configuration:
          '[/**]':  #允许跨域访问的资源
            allowedOrigins: "*" #跨域允许的来源
            allowedMethods:
              - GET
              - POST
              - PUT
              - DELETE
              - OPTIONS
              - HEAD

来源:B站诸葛老师

相关推荐
dadaobusi5 分钟前
学习:一些互联概念的澄清
学习
zyf10441624 分钟前
暑期实践日志 Day45:梳理第五章内容,完善成果总结
学习·计算机网络·剪辑·暑期实践·课题任务
m4Rk_36 分钟前
【论文阅读】Agent 记忆机制(56):R2D2——把历史网页轨迹变成可搜索地图与反思记忆
论文阅读·人工智能·学习·开源·github
M78佐菲37 分钟前
Linux学习笔记:网络通信
linux·笔记·学习·算法
m4Rk_44 分钟前
【论文阅读】Agent 记忆机制(58):Amory——把长期对话从记忆碎片组织成会生长的故事
论文阅读·人工智能·学习·开源·github
西峰u1 小时前
Java IO 完整学习笔记|字节流、字符流、缓冲流、资源关闭全梳理
java·笔记·学习
星恒随风1 小时前
C++11详解(一):统一初始化——列表初始化与 initializer_list
c++·笔记·学习·list·状态模式
我爱cope1 小时前
【计算机网络 | 网络层补充:内部网关协议:RIP 与 OSPF 如何在自治系统内选择路由?】
网络·学习·计算机网络·智能路由器
是隼人2 小时前
buuctf-pwn ciscn_2019_n_5题解(学习过程持续 更新)
c语言·学习·安全·pwn入门·ctf入门
旖旎夜光2 小时前
【AI入门】大模型介绍全解析:从模型、LLM 到提示词与嵌入
人工智能·笔记·python·学习·ai编程