springgateway 路由轉發


有些情況下,我們希望不直接訪問后端地址,這個時候可以通過springgateway網關進行處理。下面只是一個簡單的例子。

 

至於URL,變化,我們可以通過編寫程序邏輯來實現。

 

實現步驟:

 

1.新建項目

 pom.xml 文件如下 。

<?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.example</groupId>
    <artifactId>gatewaydemo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <spring-boot-dependencies.version>2.3.12.RELEASE</spring-boot-dependencies.version>
        <spring-cloud-dependencies.version>Hoxton.SR12</spring-cloud-dependencies.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>



    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-dependencies.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

</project>

 

2.新建主程序

package com.redxun;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JpaasGatewayServer {

    public static void main(String[] args) {
        SpringApplication.run(JpaasGatewayServer.class, args);
    }
}

 

3.增加路由配置

這個我們可以通過java程序或者路由配置來實現。

 

package com.redxun.config;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class GatewayConfig {

@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder routeLocatorBuilder){
         // 路由構造器
        RouteLocatorBuilder.Builder routes = routeLocatorBuilder.routes();
         // 設置路徑
        routes.route("baidu_news_guonei_routh", r -> {
             return r.path("/guonei").uri("https://news.baidu.com/guonei");
         });
         routes.route("baidu_news_guoji_routh", r -> {
             return r.path("/guoji").uri("http://news.baidu.com/guoji");
         });

        return routes.build();
     }
 }

這個代碼配置了 當 通過網關 訪問 /guonei 地址時,請求會轉發到 https://news.baidu.com/guonei

 

4.增加屬性配置

application.yml

server:
  port: 9908

spring:
  application:
    name: jpaas-gateway-server



management:
  endpoints:
    web:
      exposure:
        include: '*'
  metrics:
    tags:
      application: ${spring.application.name}

 

5.效果如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM