ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微服务框架搭建(网关路由)

2021-09-17 15:01:25  阅读:182  来源: 互联网

标签:网关 exchange spring system filter 路由 gateway cloud 搭建


文章目录

1.创建gateway工程

在这里插入图片描述

![在这里插入图片描述](https://www.icode9.com/i/ll/?i=21d19a7e32d74b4d8883ca74300011eb.png?,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBASSdtIHRoZSBiZXN0,size_20,color_FFFFFF,t_70,g_se,x_16)

2.引入pom文件

因为我使用的是spring2.2.2版本,cloud使用的Hoxton.SR9
cloud因为版本过高导致jar包冲突,我就降低了cloud的版本为Hoxton.RELEASE(完整的pom文件可以去我的github上看)


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

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

3.注册进入nacos

  • 引入pom文件
 <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
  • 修改配置

4.添加路由规则

  • 增加bootstrap配置文件夹
    在这里插入图片描述
spring:
  server:
    port: 80
  application:
    name: hz-gateway
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.1.202:8848
    gateway:
      discovery:
        locator:
          enabled: true    # 是否开启负载均衡策略
      routes:
        # system
        - id: system
          uri: lb://hz-system
          # 断言
          predicates:
            - Path=/system/**
          # 过滤
          filters:
            # 剥离一级路径
            - StripPrefix=1

5.过滤器的使用

继承GlobalFilter然后实现filter方法

@Component
public class GatewayFilter implements GlobalFilter {


    // 白名单,用于跳过某些请求
    private static final String[] whiteList = {
            "/system/config"
    };

    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String url = exchange.getRequest().getURI().getPath();
        System.out.println("网关:" + url);
        // 这里可以用来做用户登录验证
        // 跳过不需要验证的路径
        if (Arrays.asList(whiteList).contains(url)) {
            // 传递给下一个过滤器
            return chain.filter(exchange);
        }
        return chain.filter(exchange);
//        throw  new RuntimeException("鉴权错误");
    }
}

标签:网关,exchange,spring,system,filter,路由,gateway,cloud,搭建
来源: https://blog.csdn.net/zhaohan___/article/details/120348937

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有