王也踏青图照片,抖音seo教程,网站开发流程介绍,什么是h5开发Spring Cloud Gateway提供了一个在Spring生态系统之上构建的API网关#xff0c;包括#xff1a;Spring 5#xff0c;Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的路由方式#xff0c;并为它们提供一些网关基本功能#xff0c;例如… Spring Cloud Gateway提供了一个在Spring生态系统之上构建的API网关包括Spring 5Spring Boot 2和Project Reactor。Spring Cloud Gateway旨在提供一种简单而有效的路由方式并为它们提供一些网关基本功能例如安全监控/指标和弹性。 下面我们分别以两个例子说明
一. 版本说明
Spring Boot版本2.2.5.RELEASE
Spring Cloud版本Hoxton.SR3
如无特殊说明Spring Cloud的所有例程都将采用上面的版本。
二. 网关的使用
建议在本课程开始前如果不懂Eureka创建的详细步骤建议先看【一个实例学会 Spring Cloud 的注册中心 Eureka 的用法】没有看过也没关系按照下面步骤开始吧
1. 新建父项目
1.1 如果你没有父项目如果已经完成注册中心的实例肯定有父项目啦请使用简单Maven创建父项目 1.2. 创建好后打开pom.xml文件加入如下代码
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.cherry/groupIdartifactIdspringcloudproject/artifactIdversion1.0-SNAPSHOT/versionpropertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingjava.version14/java.versionspring-cloud.versionHoxton.SR3/spring-cloud.versionspringboot.version2.2.5.RELEASE/springboot.version/propertiesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${springboot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement
/project 1.3. 删除src文件夹
2. 创建网关子项目
2.1 在父项目下面使用Spring Initializr新建网关子项目gateway选择依赖Gateway简略贴图如下 建好后修改pom.xml文件修改后文件如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentartifactIdspringcloudproject/artifactIdgroupIdcom.cherry/groupIdversion1.0-SNAPSHOT/version!-- groupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.2.6.RELEASE/versionrelativePath/ lt;!ndash; lookup parent from repository ndash;gt;--/parentgroupIdcom.cherry/groupIdartifactIdgateway/artifactIdversion0.0.1-SNAPSHOT/versionnamegateway/namedescriptionDemo project for Spring Boot/description!--propertiesjava.version1.8/java.versionspring-cloud.versionHoxton.SR3/spring-cloud.version/properties--dependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-dependencies/artifactIdversion${spring-cloud.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project2.2 修改配置文件application.properties后缀为yml即文件名改为application.yml)对网关进行配置
这里我们将csdn博客作为服务提供方
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833
2.3 执行runspringboot内置Tomcat启动端口9001 2.4 浏览器输入地址http://localhost:9001/huanzi833 3. 关闭网关
如果希望网关不可用可在application.yml加入下面设置
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833enabled: false
浏览器访问结果如下 4. 通过时间匹配路由规则
注意属性文件修改后请自行重启应用后面就不每次重复说明了
4.1 时间After路由匹配
在After设置的时间之后路由生效如在2020年1月1日之后的请求都转发到我的博客这个时间之前的不能转发
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833- After2020-01-01T00:00:0008:00[Asia/Shanghai]enabled: true
4.2 时间Before路由匹配
在Before设置的时间之前的路由生效如在2021年1月1日之前的请求都转发到我的博客这个时间之后的不能转发
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833- After2020-01-01T00:00:0008:00[Asia/Shanghai]- BeforeBefore2021-01-01T00:00:0008:00[Asia/Shanghai]enabled: true
4.3 时间Between路由匹配
在Between设置的时间之间的路由生效如在2020年1月1日至2020年10月1日之间的请求都转发到我的博客这个时间以外的不能转发通常Between与After及Before不会一起使用以免重复设置。
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833
# - After2019-01-01T00:00:0008:00[Asia/Shanghai]
# - Before2021-01-01T00:00:0008:00[Asia/Shanghai]- Between2020-01-01T00:00:0008:00[Asia/Shanghai], 2020-10-01T00:00:0008:00[Asia/Shanghai]enabled: true 4.4 Cookie路由匹配
对于Cookiepredicates可以接收两个参数一个是 Cookie name ,一个是正则表达式路由规则会通过获取对应的 Cookie name 值和正则表达式去匹配如果匹配上就会执行路由如果没有匹配上则不执行。
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833
# - After2019-01-01T00:00:0008:00[Asia/Shanghai]
# - Before2021-01-01T00:00:0008:00[Asia/Shanghai]- Between2020-01-01T00:00:0008:00[Asia/Shanghai], 2020-10-01T00:00:0008:00[Asia/Shanghai]- Cookieuid, cherry #通过cookie进行路由规则的匹配enabled: true 使用Cookie路由匹配我们可以进入cmd进行测试cmd中输入如下语句 4.6 Header路由匹配
类似于Cookie路由匹配也是2个参数一个参数名称一个正则表达式如果匹配上就会执行路由如果没有匹配上则不执行。
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833
# - After2019-01-01T00:00:0008:00[Asia/Shanghai]
# - Before2021-01-01T00:00:0008:00[Asia/Shanghai]- Between2020-01-01T00:00:0008:00[Asia/Shanghai], 2020-10-01T00:00:0008:00[Asia/Shanghai]- Cookieuid, cherry #通过cookie进行路由规则的匹配- HeaderX-Request-Id, \d #Header路由规则enabled: true 进入cmd进行测试cmd中输入如下语句 4.7 Host路由匹配
以下配置通过主机地址进行匹配如www.csdn.net,或者www.baidu.com,或者blog.csdn.net等地址
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833
# - After2019-01-01T00:00:0008:00[Asia/Shanghai]
# - Before2021-01-01T00:00:0008:00[Asia/Shanghai]- Between2020-01-01T00:00:0008:00[Asia/Shanghai], 2020-10-01T00:00:0008:00[Asia/Shanghai]- Cookieuid, cherry #通过cookie进行路由规则的匹配- HeaderX-Request-Id, \d #Header路由规则- Host**.csdn.net, **.baidu.com #Host路由规则enabled: true
进入cmd进行测试cmd中输入如下语句 4.8 Method匹配路由
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833
# - After2019-01-01T00:00:0008:00[Asia/Shanghai]
# - Before2021-01-01T00:00:0008:00[Asia/Shanghai]- Between2020-01-01T00:00:0008:00[Asia/Shanghai], 2020-10-01T00:00:0008:00[Asia/Shanghai]- Cookieuid, cherry #通过cookie进行路由规则的匹配- HeaderX-Request-Id, \d #Header路由规则- Host**.csdn.net, **.baidu.com #Host路由规则- MethodGET, POST #Method路由规则enabled: true 进入cmd进行Get测试cmd中输入如下语句 进入cmd进行POST测试cmd中输入如下语句 注如果服务提供者controller中路径使用GetMapping调用时这里使用-X POST会出404 4.9 IP地址匹配
predicate 也支持通过设置某个 ip 区间号段的请求进行路由例如 192.168.1.1/24 (其中 192.168.1.1 是 IP 地址24 是子网掩码这里的24表示子网掩码是255.255.255.0)。可以将此地址设置为本机的 ip 地址进行测试。
server:port: 9001spring:application:name: gatewaycloud:gateway:routes:- id: gateway-serviceuri: https://blog.csdn.netpredicates:- Path/huanzi833
# - After2019-01-01T00:00:0008:00[Asia/Shanghai]
# - Before2021-01-01T00:00:0008:00[Asia/Shanghai]- Between2020-01-01T00:00:0008:00[Asia/Shanghai], 2020-10-01T00:00:0008:00[Asia/Shanghai]- Cookieuid, cherry #通过cookie进行路由规则的匹配- HeaderX-Request-Id, \d #Header路由规则- Host**.csdn.net, **.baidu.com #Host路由规则- MethodGET, POST #Method路由规则- RemoteAddr192.168.1.1/24enabled: true
4.10 路径路由匹配/参数匹配/权重匹配将在下面与注册中心的集成中完成。
三. 下面开始将使网关服务化并与注册中心、服务者、消费者进行关联
1. 首先创建服务中心Eureka代码如下