第十三章 SpringCloud之Gateway 路由

#######gateway  路由案例#######

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.test</groupId>
        <artifactId>springcloud</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../</relativePath> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.test</groupId>
    <artifactId>nacos-client-consumer-gateway</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>nacos-client-consumer-gateway</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Greenwich.SR1</spring-cloud.version>
    </properties>

    <dependencies>
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-web</artifactId>-->
<!--        </dependency>-->
        <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>

注意:必须要  spring-boot-starter-web 的依赖去掉,否则启动有问题

2、application.yml文件

#端口
server:
  port: 8007
#虚拟应用名
spring:
  application:
    name: springcloud-gateway

3、路由启动类

package com.test.nacosclientconsumergateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController  //需要加上
public class NacosClientConsumerGatewayApplication {

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

    /**
     * gateway 路由功能
     * @param builder
     * @return
     */
    @Bean
    public RouteLocator myRoutes(RouteLocatorBuilder builder) {
        return builder.routes()
                // 凡是请求了/gateway/get 路径的请求,都转发到http://localhost:8001//gateway/get
                .route(p -> p
                        .path("/gateway/get")
                        .filters(f -> f.addRequestHeader("Hello", "World"))
                        .uri("http://localhost:8001/"))
                .build();
    }
}

4、在localhost:8001项目中添加这个请求的路径

package com.test.nacosserver.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/gateway")
@RestController
public class GatewayController {

    @Value("${server.port}")
    private String port;

    @RequestMapping("/get")
    public String get() {
        return "get gateway "+port;
    }

    @RequestMapping("/set")
    public String set() {
        return "set gateway "+port;
    }

}

5、url请求

http://localhost:8007/gateway/get

原文地址:https://www.cnblogs.com/ywjfx/p/12180254.html

时间: 2024-08-30 18:33:11

第十三章 SpringCloud之Gateway 路由的相关文章

微服务SpringCloud之GateWay路由

在前面博客学习了网关zuul,今天学下spring官方自带的网关spring cloud gateway.Zuul(1.x) 基于 Servlet,使用阻塞 API,它不支持任何长连接,如 WebSockets,Spring Cloud Gateway 使用非阻塞 API,支持 WebSockets,支持限流等新特性. Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project R

C#高级编程第11版 - 第三十三章

导航 C# 全版本特性一览 全书目录 第三十三章 Windows Apps 33.1 Windows 应用程序简介 855 33.1.1 Windows 运行库 856 33.1.2 Hello, Windows 856 33.1.3 应用程序清单文件 857 33.1.4 应用程序启动 859 33.1.5 主页 859 33.2 XAML 861 33.2.1 XAML 标准 861 33.2.2 将元素映射到类 861 33.2.3 通过XAML 使用定制的.NET 类 862 33.2.

javascript高级程序设计 第十三章--事件

javascript高级程序设计 第十三章--事件js与HTML的交互就是通过事件实现的,事件就是文档或浏览器窗口中发生的一些特定的交互瞬间. 事件流:事件流描述的是从页面中接收事件的顺序,IE的是事件冒泡流,Netscape的是事件捕获流,这个两个是完全相反的事件流概念. 事件冒泡:由最具体的元素接收,然后逐级向上传播到更高级的节点,即事件沿DOM树向上传播,直到document对象. 事件捕获:不大具体的节点应该更早接收到事件,相当于沿DOM节点树向下级传播直到事件的实际目标,在浏览器中,是

c++第十三章 -(副本构造器)

逐位复制(bitwise copy):编译器将生成必要的代码把“源”对象各属性的值分别赋值给“目标”对象的对应成员的行为.对对象的地址赋值操作,于是乎,当删除一个对象时,它包含的指针也将被删除,但万一此时另一个副本(对象)还在引用这个指针,就会出问题! 要是程序员在当初进行对象“复制”时能够精确地表明应该复制些什么和如何赋值,那就理想了.为解决该问题,我们可以对=操作符进行重载,其中对指针进行处理:MyClass &operator= (const MyClass &rhs);该语句的意思

java-第十三章-类的无参方法(一)-查找客户姓名

package 上机练习; public class A02class { String names[] = new String[30]; public void showA(String name) { for (int i = 0; i < names.length; i++) { if (names[i] == null) { names[i] = name; break; } } } public void showB() { System.out.println("\t客户列表

java-第十三章-类的无参方法(一)-实现图形生成器

package 上机练习; public class A03class { public String showA(int rows, String ch) { for (int i = 0; i < rows; i++) { for (int j = 0; j <= i; j++) { System.out.print(ch); } System.out.println(); } return ch; } } package 上机练习; import java.util.Scanner; p

java-第十三章-类的无参方法(一)-模拟账户查询,实现存取款

package 上机练习; import java.util.Scanner; public class A04class { double Money = 0; public double showA() { return Money; } public void showB(double money) { Money += money; System.out.println("当前余额:" + Money); } public void showC(double money2) {

java-第十三章-类的无参方法(一)-代参方法的编程计算器

package 本章总结; public class A01class { public int ope(int Operator, int num1, int num2) { switch (Operator) { case 1: num1 += num2; break; case 2: num1 -= num2; break; case 3: num1 *= num2; break; case 4: num1 /= num2; break; default: System.out.print

java-第十三章-类的无参方法(一)-模拟一个简单的购房商贷月供计算器

package 本章总结; public class A02class { double Money = 0; public double showA(double money, int choice) { switch (choice) { case 1: Money = (money + money * 0.0603) / 36; break; case 2: Money = (money + money * 0.0612) / 60; break; case 3: Money = (mon