Spring Cloud 学习记录 - Gateway
Posted 风过无痕521
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud 学习记录 - Gateway相关的知识,希望对你有一定的参考价值。
Spring Cloud 学习记录 - Gateway
一、路由规则说明
id:路由规则名称
uri:真实目标地址
predicates:请求地址匹配规则
filters:请求地址过滤规则,负责将请求地址映射到真实目标地址
示例一:直接映射
routes: # 用户服务路由规则 - id: user-service-route #路由规则名称 uri: http://xx.xxx.xx.xx:pppp #真实目标uri host predicates: # 此处用来匹配请求地址 - Path=/{s1}/{s2} # 路径匹配 #输入:http://localhost:9999/user/20 实际:http://xx.xxx.xx.xx:pppp/user/20
示例二:添加前缀映射
routes: # 用户服务路由规则 - id: user-service-route #路由规则名称 uri: http://xx.xxx.xx.xx:pppp #真实目标uri host predicates: # 此处用来匹配请求地址 # 路径匹配 - Path=/{s1} filters: # 此处用来映射到真是请求地址 - PrefixPath=/user #给请求地址添加前缀 #输入:http://localhost:9999/20 实际:http://xx.xxx.xx.xx:pppp/user/20
示例三:裁剪前缀映射
routes: # 用户服务路由规则 - id: user-service-route #路由规则名称 uri: http://xx.xxx.xx.xx:pppp #真实目标uri host predicates: # 此处用来匹配请求地址 # 路径匹配 - Path=/us/** filters: # 此处用来映射到真是请求地址 - StripPrefix=1 #给请求地址裁剪前缀 #输入:http://localhost:9999/us/user/20 实际:http://xx.xxx.xx.xx:pppp/user/20
示例四:重定向映射
routes: # 用户服务路由规则 - id: user-service-route #路由规则名称 uri: http://xx.xxx.xx.xx:pppp #真实目标uri host predicates: # 此处用来匹配请求地址 # 路径匹配 - Path=/{s1} filters: # 此处用来映射到真是请求地址 - RewritePath=(?<oldPath>^/), /user$\\{oldPath} #输入:http://localhost:9999/20 实际:http://xx.xxx.xx.xx:pppp:9001/user/20
示例五:setpath映射
routes: # 用户服务路由规则 - id: user-service-route #路由规则名称 uri: http://xx.xxx.xx.xx:pppp #真实目标uri host predicates: # 此处用来匹配请求地址 # 路径匹配 - Path=/client/{s1}/{s2} filters: # 此处用来映射到真是请求地址 - SetPath=/{s1}/{s2} #输入:http://localhost:9999/client/user/20 实际:http://xx.xxx.xx.xx:pppp/user/20
示例六:根据服务名映射
routes: # 用户服务路由规则 - id: user-service-route #路由规则名称 uri: lb://user-service #真实目标uri service predicates: # 此处用来匹配请求地址 - Path=/us/** filters: # 此处用来映射到真是请求地址 - StripPrefix=1 #给请求地址裁剪前缀
二、跨域配置
spring: cloud: gateway: globalcors: cors-configurations: \'[/**]\': allowCredentials: true allowedOrigins: "*" allowedMethods: "*" allowedHeaders: "*"
三、问题
nested exception is java.lang.NoClassDefFoundError: javax/validation/ValidationException
原因:项目中没有引用 spring-boot-starter-validation 包
As of #19550,
Web and WebFlux starters do not depend on the validation starter by default anymore.
If your application is using validation features, you’ll need to manually add back a dependency on spring-boot-starter-validation in your build file.
解决方案:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
参考资料:
Spring Cloud Gateway -- 关于Path的配置
跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探
Spring Cloud Alibaba | Gateway基于Nacos动态网关路由
基于Nacos实现Spring Cloud Gateway实现动态路由
Spring Cloud Alibaba实战(七) - Gateway搭配Nacos实现动态路由
Spring Cloud Gateway跨域配置 - 配置后无效解决办法
Spring cloud gateway 详解和配置使用(文章较长)
聊聊spring cloud gateway的PrefixPath及StripPrefix功能
聊聊spring cloud的DiscoveryClientRouteDefinitionLocator
使用spring-boot-starter-validation做参数校验
一文带你了解 Spring 5.0 WebFlux 应用场景
SpringCloud实战十一:Gateway之 Spring Cloud Gateway
限流
聊聊spring cloud的RequestRateLimiterGatewayFilter
Spring Cloud 微服务五:Spring cloud gateway限流
spring cloud gateway 实现接口限流(可以收藏保存)
熔断降级
以上是关于Spring Cloud 学习记录 - Gateway的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud学习记录 08Spring Cloud Bus服务总线
Spring Cloud Alibaba 学习记录 - Sentinel