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

Gateway路由配置实战

Gateway路由配置实战前言Spring Cloud Gateway是Spring官方提供的API网关基于响应式编程性能优异。本文将详细介绍Gateway的路由配置、过滤器使用和最佳实践。一、快速集成1.1 依赖配置dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-gateway/artifactId /dependency dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-loadbalancer/artifactId /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId /dependency1.2 基础配置server: port: 8080 spring: application: name: gateway cloud: nacos: discovery: server-addr: ${NACOS_SERVER:localhost:8848} gateway: discovery: locator: enabled: true lower-case-service-id: true filters: - name: CircuitBreaker args: name: myCircuitBreaker fallbackUri: forward:/fallback routes: - id: order-service uri: lb://order-service predicates: - Path/order/** filters: - StripPrefix1 - id: product-service uri: lb://product-service predicates: - Path/product/** filters: - StripPrefix1 - id: user-service uri: lb://user-service predicates: - Path/user/** filters: - StripPrefix1二、路由配置2.1 静态路由spring: cloud: gateway: routes: - id: api-route uri: http://api.example.com predicates: - Hostapi.example.com - Path/v1/** filters: - RewritePath/v1(?segment/?.*), $\{segment}2.2 动态路由spring: cloud: nacos: discovery: enabled: true gateway: discovery: locator: enabled: true lower-case-service-id: true2.3 条件路由spring: cloud: gateway: routes: - id: header-route uri: lb://order-service predicates: - HeaderX-User-Version, v2\\d - id: weight-route uri: lb://order-service-v2 predicates: - Weightgroup1, 10三、过滤器3.1 内置过滤器spring: cloud: gateway: default-filters: - DedupeResponseHeaderVary Access-Control-Allow-Origin Access-Control-Allow-Credentials - RequestSize5M routes: - id: add-headers-route uri: lb://order-service filters: - AddRequestHeaderX-Request-First, first - AddRequestHeaderX-Request-Second, second - AddResponseHeaderX-Response-First, first - RemoveRequestHeaderX-Forwarded-For - SetStatus2003.2 自定义过滤器Component Slf4j public class LoggingFilter implements GlobalFilter, Ordered { Override public MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) { ServerHttpRequest request exchange.getRequest(); String path request.getPath().value(); String method request.getMethod().name(); String traceId request.getHeaders().getFirst(X-Trace-Id); log.info(Gateway request: {} {} traceId{}, method, path, traceId); long startTime System.currentTimeMillis(); return chain.filter(exchange) .then(Mono.fromRunnable(() - { long duration System.currentTimeMillis() - startTime; log.info(Gateway response: {} {} status{} duration{}ms, method, path, exchange.getResponse().getStatusCode(), duration); })); } Override public int getOrder() { return Ordered.HIGHEST_PRECEDENCE; } }四、安全配置4.1 认证过滤器Component public class AuthenticationFilter implements GlobalFilter { Autowired private JwtTokenProvider tokenProvider; Override public MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) { String path exchange.getRequest().getPath().value(); if (isPublicPath(path)) { return chain.filter(exchange); } String token extractToken(exchange.getRequest()); if (token null || !tokenProvider.validateToken(token)) { exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED); return exchange.getResponse().setComplete(); } // 添加用户信息到请求头 ServerHttpRequest mutatedRequest exchange.getRequest() .mutate() .header(X-User-Id, tokenProvider.getUserId(token)) .build(); return chain.filter( exchange.mutate().request(mutatedRequest).build()); } private boolean isPublicPath(String path) { return path.startsWith(/api/auth/) || path.startsWith(/api/public/); } private String extractToken(ServerHttpRequest request) { String bearerToken request.getHeaders() .getFirst(HttpHeaders.AUTHORIZATION); if (StringUtils.hasText(bearerToken) bearerToken.startsWith(Bearer )) { return bearerToken.substring(7); } return null; } }五、总结Spring Cloud Gateway提供了强大的路由和过滤能力是构建API网关的优秀选择。通过与Nacos的集成可以实现动态路由和负载均衡。
http://www.rkmt.cn/news/1369167.html

相关文章:

  • GNSS欺骗干扰检测算法与实验验证方法【附仿真】
  • Cursor Pro破解工具:5步解锁AI编程助手完整功能终极指南
  • AI智能体:从概念到现实的技术演进与应用前景
  • 3步永久解密:让科学文库加密PDF重获自由的实用工具
  • DHCP协议:从原理机制到企业级实战,构建自动化网络的“隐形基石”
  • OpenAI 推出的 GPT-5.5 大模型,倒逼接口芯片升级迭代@ACP#IX8024应用迭代
  • DLSS Swapper终极指南:如何轻松管理游戏DLSS文件提升性能
  • 对比按次与按 Token Plan 消费,哪种方式在 Taotoken 上更划算
  • OpenAI 推出的 GPT-5.5 大模型,倒逼接口芯片升级迭代@ACP#IX8012应用迭代
  • 2026陕西宝鸡瓷砖空鼓翘边免砸砖维修公司靠谱品牌修复价格排名:雨和虹防水维修/雨盛防水维修/秦鑫斌防水维修/森之澜漏水检测/能亿防水补漏/成诺防水修缮 - 雨和虹防水维修
  • 2026推荐:随州CMA甲醛检测治理及公共卫生检测报告排行榜(2026版) - 五金回收
  • JVM调优实战:从频繁Full GC到毫秒级响应的真实踩坑记录
  • 3分钟快速掌握:通达信缠论可视化分析插件完整使用教程
  • 10分钟掌握AppImageLauncher:Linux应用集成终极解决方案
  • py每日spider案例之某you道翻译接口(基于deepseek v4 pro完美逆向)
  • 在 Node.js 后端服务中接入 Taotoken 实现多轮对话与流式响应
  • 如何快速掌握QrazyBox:专业二维码修复工具的完整指南
  • Taotoken API Key管理与访问控制功能实际使用评价
  • DeepSeek工具调用能力深度评测(实测12类插件+8种LLM上下文窗口下的成功率与延迟数据)
  • 万源市2026最新黄金回收本地口碑商家榜:黄金首饰+白银+铂金+彩金回收门店及联系方式推荐 - 前途无量YY
  • 西宁市2026最新黄金回收本地口碑商家榜:黄金首饰+白银+铂金+彩金回收门店及联系方式推荐 - 前途无量YY
  • 如何为《植物大战僵尸》实现终极宽屏补丁:3个关键技术解析
  • Taotoken控制台的用量分析与账单追溯功能实际使用观感
  • 淘金币自动化脚本:5分钟搞定淘宝日常任务的终极指南
  • BilibiliDown深度评测:5大实用技巧让你轻松收藏B站优质内容
  • 从编译噩梦到一键部署:Dlib Windows预编译包的开发者体验革命
  • 【DeepSeek免费额度使用全攻略】:20年AI平台实战专家亲授,3步榨干每日100万Token额度(附避坑清单)
  • 在OpenClawAgent工作流中集成Taotoken多模型能力的实践
  • 2026推荐:邵阳母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 五金回收
  • 仙桃市2026最新黄金回收本地口碑商家榜:黄金首饰+白银+铂金+彩金回收门店及联系方式推荐 - 前途无量YY