当前位置: 首页 > news >正文

SpringCloud Gateway网关路由配置 接口统一 登录验证 权限校验 路由属性

介绍

Spring Cloud Gateway 根据请求的路径、HTTP 方法、头部等信息,将请求路由到对应的微服务实例。它支持基于动态路由规则的配置,可以根据请求的 URL、查询参数、请求头等条件,灵活地决定将请求转发到哪个微服务。Spring Cloud Gateway 提供了一个单一的入口点,所有来自客户端的请求都通过该网关进行转发。通过这种方式,外部应用无需直接访问各个微服务,提高了架构的可维护性和安全性。
在这里插入图片描述

网关也是一个微服务

依赖

 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><version>3.1.4</version><!-- 对应 Spring Cloud 2021.0.4 版本 --></dependency>

其他配合依赖

<!--负载均衡-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId><version>3.1.3</version>  <!-- Spring Cloud OpenFeign 版本 -->
</dependency><!--  nacos 服务的注册发现     -->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2021.0.5.0</version>
</dependency>

配置文件

server:port: 80
spring:application:name: gateway #服务名称cloud:nacos:server-addr: 172.23.4.128:8848 #注册中心

路由配置

server:port: 80
spring:application:name: gateway #服务名称cloud:nacos:server-addr: 172.23.4.128:8848 #注册中心gateway:routes:- id: java-user #路由ID 一般为服务名称uri: lb://java-user #转发的路径 lb为负载均衡 java-user为服务接口predicates: #路由条件- Path=/user/** #请求接口路径# - Path=/user/**,/path/**    多个控制器这样写- id: java-goodsuri: lb://java-goodspredicates:- Path=/goods/**

这样就可以通过127.0.0.1:80/user/xxx/ 将请求负载均衡到其他微服务上了


路由属性

  • id 路由的唯一标识符
  • uri 路由的目标地址
  • predicates 路由断言,判断请求是否符合当前路由。
  • filter 路由过滤器,对请求或响应做特殊处理

路由断言

在这里插入图片描述

路由过滤器

在这里插入图片描述

添加请求头

token为请求头名称,123456为值

gateway:routes:- id: java-user #路由ID 一般为服务名称uri: lb://java-user #转发的路径 lb为负载均衡 java-user为服务接口predicates: #路由条件- Path=/user/** #请求接口路径# - Path=/user/**,/path/**    多个控制器这样写- id: java-goodsuri: lb://java-goodspredicates:- Path=/goods/**filters:- AddRequestHeader=token,123456

如果微服务的接口很多,每个服务但需要去配置filters就特别麻烦,可以配置全局的请看下方。

微服务获取请求头

@GetMapping("/list")
public List<Goods> list(@RequestHeader("token") String token ){System.out.println(token);System.out.println("我被调用");return  goodsService.list();
}

全局过滤器

default-filters为全局的不需要一个个配置

gateway:routes:- id: java-user #路由ID 一般为服务名称uri: lb://java-user #转发的路径 lb为负载均衡 java-user为服务接口predicates: #路由条件- Path=/user/** #请求接口路径# - Path=/user/**,/path/**    多个控制器这样写- id: java-goodsuri: lb://java-goodspredicates:- Path=/goods/**default-filters:- AddRequestHeader=token,123456

http://www.mrgr.cn/news/75266.html

相关文章:

  • 使用 Keras 训练一个循环神经网络(RNN)
  • Python 的 Pygame 库,编写简单的 Flappy Bird 游戏
  • 5G 现网信令参数学习(3) - RrcSetup(1)
  • 【MySQL】MySQL函数之JSON_EXTRACT
  • 正则表达式那些事儿
  • Netty实现WebSocket Server是否开启压缩深度分析
  • 日志:中文 URI 参数乱码之 encodeURI、encodeURIComponent、escape 作为 Ajax 中文参数编码给 ASP 的记录
  • 爆肝线程池底层源码,高并发精进之路!
  • 相交链表
  • 曹操为什么总是亲征
  • 1050 String Subtraction (20)
  • C++笔记
  • 多模态大模型(2)--BLIP
  • 【电子设计】按键LED控制与FreeRTOS
  • NGUI————按钮练习题
  • Towards Reasoning in Large Language Models: A Survey
  • Spring加载流程,Springboot自动装配原理
  • android开发
  • exo - 使用日常设备运行AI集群
  • 2024年09月CCF-GESP编程能力等级认证Python编程一级真题解析
  • 微信小程序-prettier 格式化
  • Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)
  • leetcode hot100【LeetCode 105.从前序与中序遍历序列构造二叉树】java实现
  • Web性能优化:从基础到高级
  • 二叉树的遍历(手动)
  • 一文了解Android的核心系统服务