2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Spring Cloud Gateway tarjoaa API-yhdyskäytävän, joka on rakennettu Spring-ekosysteemin päälle, mukaan lukien: Spring 5, Spring Boot 2 ja Project Reactor. Spring Cloud Gateway pyrkii tarjoamaan yksinkertaisen mutta tehokkaan reititystavan ja tarjoaa heille joitain yhdyskäytävän perusominaisuuksia, kuten suojaus, valvonta/metriikka ja joustavuus.
Alla havainnollistetaan kahdella esimerkillä:
Spring Boot -versio: 2.2.5.RELEASE
Spring Cloud -versio: Hoxton.SR3
Ellei toisin mainita, kaikki Spring Cloud -rutiinit käyttävät yllä olevaa versiota.
Suositus: Ennen tämän kurssin aloittamista, jos et ymmärrä Eurekan luomisen yksityiskohtaisia vaiheita, on suositeltavaa lukea [Opi käyttämään Spring Cloudin rekisteröintikeskus Eurekaa esimerkin avulla],Sillä ei ole väliä, jos et ole vielä nähnyt sitä, aloita noudattamalla alla olevia ohjeita:
Jos sinulla ei ole pääprojektia (jos olet suorittanut rekisteröintikeskuksen ilmentymän, sinulla on oltava yläprojekti), luo emoprojekti yksinkertaisella Mavenilla:
Kun olet luonut sen, avaa pom.xml-tiedosto ja lisää seuraava koodi:
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.cherry</groupId>
- <artifactId>springcloudproject</artifactId>
- <version>1.0-SNAPSHOT</version>
-
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <java.version>14</java.version>
- <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
- <springboot.version>2.2.5.RELEASE</springboot.version>
- </properties>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring-cloud.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-dependencies</artifactId>
- <version>${springboot.version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- </project>
Poista src-kansio
Käytä emoprojektissa Spring Initializr -ohjelmaa uuden yhdyskäytävän aliprojektin, yhdyskäytävän luomiseen ja valitse riippuvuus Gatewaysta. Yksinkertainen kartta on seuraava:
Kun se on rakennettu, muokkaa pom.xml-tiedostoa seuraavasti:
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>springcloudproject</artifactId>
- <groupId>com.cherry</groupId>
- <version>1.0-SNAPSHOT</version>
- <!-- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.2.6.RELEASE</version>
- <relativePath/> <!– lookup parent from repository –>-->
- </parent>
- <groupId>com.cherry</groupId>
- <artifactId>gateway</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <name>gateway</name>
- <description>Demo project for Spring Boot</description>
-
- <!--<properties>
- <java.version>1.8</java.version>
- <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
- </properties>-->
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-gateway</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
-
- <dependencyManagement>
- <dependencies>
- <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>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
- </project>
Muokkaa määritystiedostoa application.properties jälkiliitteellä yml (eli vaihda tiedoston nimi muotoon application.yml) määrittääksesi yhdyskäytävän.
Täällä käytämme palveluntarjoajana csdn-blogia
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
Suorita ajo, sisäänrakennettu springboot Tomcat käynnistyy, portti 9001
Selaimen syöttöosoitehttp://localhost:9001/huanzi833
Jos et halua, että yhdyskäytävä ei ole käytettävissä, voit lisätä seuraavat asetukset tiedostoon application.yml:
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- enabled: false
-
Selaimen käyttö, tulokset ovat seuraavat:
Huomautus: Kun olet muokannut ominaisuustiedostoa, käynnistä sovellus itse uudelleen. En toista ohjeita joka kerta.
Reititys astuu voimaan After-asetuksen jälkeen. Esimerkiksi: 1.1.2020 jälkeen tehdyt pyynnöt välitetään blogiini, eikä tätä ajankohtaa edeltäviä pyyntöjä voida välittää.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Reitit ennen Ennen voimaantuloa asetettua aikaa Esimerkiksi: ennen 1.1.2021 tehdyt pyynnöt välitetään blogiini, eikä tämän ajan jälkeisiä pyyntöjä voi lähettää eteenpäin.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- - After=2020-01-01T00:00:00+08:00[Asia/Shanghai]
- - Before=Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Välillä asettama reititys astuu voimaan Esimerkiksi: 1.1.2020 ja 1.10.2020 välisiä pyyntöjä ei voi lähettää eteenpäin toistuvien asetusten välttämiseksi.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- enabled: true
-
Evästeen predikaatit voivat vastaanottaa kaksi parametria, joista toinen on evästeen nimi ja toinen säännöllinen lauseke. Jos ne täsmäävät, reititys suoritetaan. reititystä ei suoriteta.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- enabled: true
-
Evästeiden reitityssovituksen avulla voimme testata antamalla cmd:n ja kirjoittaa seuraavan lauseen cmd:ssä:
Evästeen reitin täsmäämisen tapaan on olemassa myös kaksi parametria, parametrin nimi ja säännöllinen lauseke. Jos vastaavuus löytyy, reittiä ei suoriteta.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- enabled: true
-
Kirjoita cmd testattavaksi, kirjoita seuraava lause cmd:ssä:
Seuraavat asetukset vastaavat isäntäosoitetta, kuten www.csdn.net tai www.baidu.com tai blog.csdn.net ja muita osoitteita
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- enabled: true
-
Kirjoita cmd testattavaksi, kirjoita seuraava lause cmd:ssä:
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- - Method=GET, POST #Method路由规则
- enabled: true
-
Suorita Get-testi kirjoittamalla cmd Kirjoita seuraava lauseke cmd:ssä:
Kirjoita cmd suorittaaksesi POST-testin Kirjoita seuraava lauseke cmd:ssä: (Huomaa: Jos palveluntarjoajan ohjaimen polku käyttää GetMappingia ja -X POST -testiä käytetään tässä kutsuttaessa, 404 tulee näkyviin.
predikaatti tukee myös reititystä asettamalla pyynnön tietyllä IP-välinumerolla, kuten 192.168.1.1/24 (jossa 192.168.1.1 on IP-osoite, 24 on aliverkon peite ja 24 tässä tarkoittaa, että aliverkon peite on 255.255.255.0 ). Voit asettaa tämän osoitteen paikalliseksi IP-osoitteeksi testausta varten.
- server:
- port: 9001
-
- spring:
- application:
- name: gateway
- cloud:
- gateway:
- routes:
- - id: gateway-service
- uri: https://blog.csdn.net
- predicates:
- - Path=/huanzi833
- # - After=2019-01-01T00:00:00+08:00[Asia/Shanghai]
- # - Before=2021-01-01T00:00:00+08:00[Asia/Shanghai]
- - Between=2020-01-01T00:00:00+08:00[Asia/Shanghai], 2020-10-01T00:00:00+08:00[Asia/Shanghai]
- - Cookie=uid, cherry #通过cookie进行路由规则的匹配
- - Header=X-Request-Id, d+ #Header路由规则
- - Host=**.csdn.net, **.baidu.com #Host路由规则
- - Method=GET, POST #Method路由规则
- - RemoteAddr=192.168.1.1/24
- enabled: true
-
Polun reittisovitus/parametrien täsmäytys/painosovitus suoritetaan seuraavassa integraatiossa rekisteröintikeskuksen kanssa.
1. Luo ensin palvelukeskus Eureka, koodi on seuraava: