GateWay网关 – 环境搭建v2「建议收藏」

GateWay网关 – 环境搭建v2「建议收藏」目录基础使用Maven依赖application配置Gateway整合Nacos实现服务转发Maven依赖application配置自定义TokenFilter实现参数拦截gateWay高可用集群方式基础使用Maven依赖注意:不能引入spring-cloud-starter-web,会出现错误<parent>…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

目录

基础使用

Maven依赖 

application配置

Gateway整合Nacos实现服务转发

Maven依赖

application配置

自定义TokenFilter实现参数拦截

gateWay高可用集群方式


基础使用

Maven依赖 

  注意:不能引入 spring-cloud-starter-web,会出现错误


<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>
</dependencies>

application配置

server:
  port: 80
  
####服务网关名称
spring:
  application:
    name: mayikt-gateway
  cloud:
    gateway:
        ###路由策略
      routes:
        ###路由id
        - id: mayikt
          ####转发http://www.mayikt.com/
          uri: http://www.mayikt.com/
          ###匹配规则
          predicates:
            - Path=/mayikt/**
             ###浏览器请求127.0.0.1/mayikt 会转发到http://www.mayikt.com/
        - id: cq
          uri: http://127.0.0.1:8060
          ###匹配规则
          predicates:
            - Path=/user/**
            ###浏览器请求127.0.0.1/user/lo 会转发到http://127.0.0.1:8060/user/lo

浏览器输入127.0.0.1/mayikt会转发到http://www.mayikt.com/


Gateway整合Nacos实现服务转发

Maven依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>0.2.2.RELEASE</version>
    </dependency>
</dependencies>

application配置

server:
  port: 80
####服务网关名称
spring:
  application:
    name: mayikt-gateway
  cloud:
    gateway:
      discovery:
        locator:
          ####开启以服务id去注册中心上获取转发地址
          enabled: true
        ###路由策略
      routes:
        ###路由id
        - id: mayikt
          ####转发http://www.mayikt.com/
          uri: http://www.mayikt.com/
          ###匹配规则
          predicates:
            - Path=/mayikt/**
        ###路由id
        - id: member
          #### 基于lb负载均衡形式转发,mayikt-member为nacos中的会员服务名称
          uri: lb://mayikt-member
          ###是否带请求前缀
          filters:
            - StripPrefix=1
          ###匹配规则
          predicates:
            - Path=/member/**
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    ### nacos注册中心地址

自定义TokenFilter实现参数拦截

案例:拦截所求请求,如果请求参数不包含token则返回500响应码

/**
 * gateway拦截器
 */
@Component
public class TokenFilter implements GlobalFilter {
    
    // 拦截所求请求,如果请求参数不包含token则返回500响应码
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        String token = exchange.getRequest().getQueryParams().getFirst("token");
        if (token == null || token.isEmpty()) {
            // 封装响应内容
            ServerHttpResponse response = exchange.getResponse();
            response.setStatusCode(HttpStatus.BAD_REQUEST);
            String msg = "token not is null "; 
            DataBuffer buffer = response.bufferFactory().wrap(msg.getBytes());
            return response.writeWith(Mono.just(buffer));
        }
        // 使用网关过滤
        return chain.filter(exchange); // 放行
    }

}

gateWay高可用集群方式:

https://mp.csdn.net/postedit/104088145

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194163.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数论的概念_数论难吗

    数论的概念_数论难吗转载自:https://blog.csdn.net/whereisherofrom/article/details/78922798素数:http://www.cnblogs.com/fzl194/

    2022年8月2日
    12
  • MySQL数据库分区分表配置以及原理、特点、概念、区别详解「建议收藏」

    MySQL数据库分区分表配置以及原理、特点、概念、区别详解「建议收藏」一、为什么要分表和分区?我们的数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询速度变慢,而且由于表的锁机制导致应用操作也受到严重影响,出现了数据库性能瓶颈。mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行操作。当出现这种情况时,我们可以考虑…

    2022年5月22日
    39
  • java 毕设 成品_校园物品交换平台 – java|jsp类成品展示 – 计算机专业毕业设计论文成品网…

    java 毕设 成品_校园物品交换平台 – java|jsp类成品展示 – 计算机专业毕业设计论文成品网…与传统的交换方式相比,物品交换网站是另一种形态的宣传和交换通道,是传统交换方式的延伸。它除了一般的电子商务功能外,还包括产品展示,商品检索,在线交友等服务;在迎合了电子商务这个社会大前提下,每个人都可以在网上购买或者交换自己喜欢的商品,从而可以大大地节约资金、时间和资源,并起到促进整个社会和谐的作用。校园物品交换平台使用JSP,Hibernate,Structs,Spring,Html,CSS。后…

    2022年7月7日
    35
  • idea和eclipse哪个区别_第一责任和主要责任的区别

    idea和eclipse哪个区别_第一责任和主要责任的区别IDEA中“newProject”就eclipse的“workspace”,而“newModule”才是创建一个工程,这是要注意的一点。IDEA不会自动编译和加载CLASS,ECLIPSE是自动的,IDEA可以通过ModeEclipse插件来实现自动加载和编辑ClassIDEA编辑的文件是自动保存的,不能设置为手动保存,这个和Eclipse差别最大,很多人

    2022年8月29日
    3
  • checkbox实现单选

    checkbox实现单选checkbox实现单选信用等级量化分级管理(级别)ABCD$(function(){$(’[name=“XYDJLHFJ”][type=“checkbox”]’).each(function(){KaTeXparseerror:Expecte…

    2022年5月30日
    139
  • [数据库] 一文搞懂case when所有使用场景「建议收藏」

    [数据库] 一文搞懂case when所有使用场景「建议收藏」前几天,为了给产品分析当前用户数据结构,写sql的时候使用到了casewhen,今天来总结一下casewhen的使用方法,以此为戒,感觉写的不好请拍砖,感觉写的还可以,给哥们点个赞,或者回复一下,让我意识到我不是一个人在战斗,好了废话不多说了,进入正题。关于casewhen的使用情况,我总结下来有三种,第一、等值转换,第二、范围转换,第三、列转行操作。等值转换咱们在设计数据库的…

    2025年9月17日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号