1、前言
本文介紹的spring cloud gateway 版本爲 2.2.1.RELEASE。
本文依賴的開發工具:Maven ( >= 3.3.3 )、JDK、IntelliJ IDE。
文章學習參考:芋道源碼Spring Cloud Gateway系列
2、基本介紹
以下是官方文檔對spring cloud gateway的介紹:
This project provides an API Gateway built on top of the Spring Ecosystem, including: Spring 5, Spring Boot 2 and Project Reactor. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and provide cross cutting concerns to them such as: security, monitoring/metrics, and resiliency.
該項目提供了一個API網關,構建在Spring生態系統之上,包括:spring 5、spring boot 2、project reactor。Spring Cloud Gateway 旨在提供一種簡單而有效的方式,以路由到 API,併爲他們提供橫切關注點的處理,例如:安全性、監控/指標和彈性。
3、開發環境搭建
3.1基礎配置
(1)添加依賴
<properties>
<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR1</spring.cloud.version>
</properties>
<!--
引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,進行依賴版本的管理,防止不兼容。
在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 開發團隊推薦了三者的依賴關係
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 引入 Spring Cloud Gateway 相關依賴,使用它作爲網關,並實現對其的自動配置 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
</dependencies>
(2)增加配置
spring:
application:
name: gateway-application
cloud:
# Spring Cloud Gateway 配置項,對應 GatewayProperties 類
gateway:
# 路由配置項,對應 RouteDefinition 數組
routes:
- id: csdn # 路由的編號
uri: https://blog.csdn.net # 路由到的目標地址,只能到域名部分 ,當配置超過域名部分,則會截取域名部分,如https://blog.csdn.net/dear_little_bear,會截取爲https://blog.csdn.net
predicates: # 斷言,作爲路由的匹配條件,對應 RouteDefinition 數組
- Path=/blog
filters:
- StripPrefix=1
- id: oschina # 路由的編號
uri: https://www.oschina.net # 路由的目標地址
predicates: # 斷言,作爲路由的匹配條件,對應 RouteDefinition 數組
- Path=/oschina
filters: # 過濾器,對請求進行攔截,實現自定義的功能,對應 FilterDefinition 數組
- StripPrefix=1
- id: avatar # 路由的編號
uri: http://localhost:9000 # 路由的目標地址
predicates: # 斷言,作爲路由的匹配條件,對應 RouteDefinition 數組
- Path=/test/img/**
filters: # 過濾器,對請求進行攔截,實現自定義的功能,對應 FilterDefinition 數組
- StripPrefix=1
# 記錄網關日誌
logging:
level:
org.springframework.cloud.gateway: TRACE
org.springframework.http.server.reactive: DEBUG
org.springframework.web.reactive: DEBUG
reactor.ipc.netty: DEBUG
reactor.netty: DEBUG
3.2運行示例
3.3源碼
本章源碼地址:SpringBoot-Labs,labx-08-sc-gateway-demo01章節。