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

Gateway 搭建

1.创建 moudle 命名为 gateway

2,pom中引入依赖 网关依赖;注册中心依赖等

<!--        网关依赖--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>
<!--     nacos注册中心   --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
<!--        负载均衡--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>

创建启动类

配置yml文件

spring:application:name: gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848
server:port: 80

测试 启动成功

配置请求分发路径

spring:application:name: gatewaycloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:routes:- id: order-route  # 路由名称uri: lb://order  # 路由要转发的服务 格式为固定的  lb:// 服务名predicates: # 断言- Path=/api/order/**  # 路径为 /api/order/** 的请求专项order服务- id: product-routeuri: lb://productpredicates:- Path=/api/product/**

网关路径重写示例:

例如:请求的全路径为 /api/order/getOrder经过网关后 将请求地址省略为 /getOrder 

filters:- RewritePath=/red/?(?<segment>.*),/$\{segment}

自定义网关全局过滤器

package gateway.filter;import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;//自定义全局过滤器
@Component
public class RtGlobalFiler implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request = exchange.getRequest();ServerHttpResponse response = exchange.getResponse();String string = request.getURI().toString();System.out.println("当前操作时间"+System.currentTimeMillis()+"操做的地址:"+string);Mono<Void> doFinally = chain.filter(exchange).doFinally((result) -> {System.out.println("当前操作的结束时间" + System.currentTimeMillis());});return doFinally;}@Overridepublic int getOrder() {return 0;}
}

gateway yml 跨域配置

请求效果

http://www.xdnf.cn/news/11836.html

相关文章:

  • AD四层板的层叠设计
  • window 显示驱动开发-提供视频解码功能(三)
  • 飞算JavaAI 炫技赛重磅回归!用智能编码攻克老项目重构难题
  • oracle从表B更新拼接字段到表A
  • 链表题解——环形链表【LeetCode】
  • MySQL 索引:为使用 B+树作为索引数据结构,而非 B树、哈希表或二叉树?
  • mysql 悲观锁和乐观锁(—悲观锁)
  • MySQL 关联查询速查笔记
  • MySQL 事务深度解析:面试核心知识点与实战
  • nginx配置
  • 机器学习基础相关问题
  • vue2 项目中 npm run dev 运行98% after emitting CopyPlugin 卡死
  • QT聊天项目DAY13
  • 掌握 MotionLayout:交互动画开发
  • 用户 xxx is not in the sudoers file.
  • 基于Gemini 2.5 Pro打造的AI智能体CanvasX上线,绘制常见图表(折线图、柱状图等),国内直接使用
  • FreeCAD:开源世界的三维建模利器
  • (每日一道算法题)求根节点到叶节点数字之和
  • HTML基础学习
  • MYSQL之表的内连和外连
  • ABP-Book Store Application中文讲解 - Part 8: Authors: Application Layer
  • 解决Java项目NoProviderFoundException报错
  • C++课设:银行账户管理系统
  • 【Golang笔记04】Go语言中文件操作的学习笔记
  • tauri2项目中自定义执行cmd命令界面卡死以及中文出错问题
  • Elasticsearch中的监控(Monitoring)功能介绍
  • 【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
  • 八:操作系统设备管理之I/O 操作方法
  • AI编程规范失控?三大策略用Cursor Rules精准约束
  • 电子手机商城源码+springboot+vue3(带用户协同过滤个性化推荐算法)