Spring Cloud 之 GateWay简介及简单DEMO的搭建

news2024/12/23 22:08:24

(1)Filter(过滤器):

和Zuul的过滤器在概念上类似,可以使用它拦截和修改请求,并且对上游的响应,进行二次处理。过滤器为org.springframework.cloud.gateway.filter.GatewayFilter类的实例。

(2)Route(路由):
网关配置的基本组成模块,和Zuul的路由配置模块类似。一个Route模块由一个 ID,一个目标 URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配,目标URI会被访问。

(3)Predicate(断言):

这是一个 Java 8 的 Predicate,可以使用它来匹配来自 HTTP 请求的任何内容,例如 headers 或参数。断言的输入类型是一个 ServerWebExchange。

案例内容:

gateway基本目录:

在这里插入图片描述
bootstrap.yml

server:
  port: 8081
spring:
  profiles:
    active: dev
  application:
    name: tt-sc-gateway
  cloud:
    nacos:
      username: nacos
      password: nacos
      config:
        server-addr: 192.168.xx.xxx:8848
        file-extension: yml
        #开启nacos作为配置中心,默认值:true
#        enabled: true
#        # 配置文件读取的nacos命名空间ID,默认值:public
#        namespace: 7c6ef0e3-5384-499a-9357-25fa3b9c0a1e
#        # 配置文件在nacos命名空间中的分组,默认值:DEFAULT_GROUP
#        group: DEFAULT_GROUP
#        # 配置文件的文件前缀(配置文件名称),默认值:${spring.application.name}-${spring.profiles.active}
#        prefix: ${spring.application.name}-${spring.profiles.active}
#        # 配置文件的文件后缀(文件类型),默认值:properties
#        file-extension: yaml
#        # 配置内容的编码方式,默认值:UTF-8
#        encode: UTF-8
#        # 获取配置的超时时间,单位:ms,默认值:3000
#        timeout: 3000
#        # 开启监听和自动刷新,动态感知配置变化,默认值:true
#        refresh-enabled: true
        ###############################################
        # 引入扩展配置(同一分组或不同分组)
        # extension-configs:
        # 配置支持共享的 Data Id
          # - data-id: global.yaml
          # 配置 Data Id 所在分组,缺省默认 DEFAULT_GROUP
          # group: DEFAULT_GROUP
          # 配置Data Id 在配置变更时,是否动态刷新,缺省默认 false
          # refresh: true
      discovery:
        server-addr: 192.168.xx.xxx:8848

application-dev.yml

spring:
  cloud:
    gateway:
      discovery:
        locator:
          # 是否与服务发现组件进行结合,通过 serviceId 转发到具体的服务实例。默认为false
          enabled: true
          lower-case-service-id: true #使用小写service-id
      routes: # 网关路由配置
        - id: feignconsumer # 路由id,自定义,只要唯一即可
          # 目标服务地址(uri:地址,请求转发后的地址)
          # uri: http://127.0.0.1:8081 路由的目标地址http 就是固定地址,uri的协议为lb,表示启用Gateway的负载均衡功能。
          uri: lb://tt-sc-feign-consumer # 路由的目标地址lb就是负载均衡,后面跟服务名称
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件;转发地址格式uri/archive
            - Path=/user/** # 这个是按照路径匹配,只要以 /user/ 开头就符合要求
          fitters:
            - RewritePath=/user/?(?<segment>.*),/$\{segment}
        - id: feignprovide
          uri: lb://tt-sc-feign-provide
          predicates:
            - Path=/provide/**
              # 在这个时间之后的请求才会被转发
            #- After=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]
      globalcors: # 全局的跨域处理
        add-to-simple-url-handLer-mapping: true # 解决options 请求被拦截问题
        corsConfigurations:
          '[/**]': # 指定 拦截哪些请求
            allowed0rigins: # 允许哪些网站的跨域请求
              - "http:xxx.xxxx"
              - "http://www.you.com"
            allowedMethods: # 允许的跨域 ajax 的请求方式
              - "GET"
              - "POST"
              - "DELETE"
              - "PUT"
              - "OPTIONS"
            allowedHeaders: "*" # 允许在请求中携带的头信息
            allowCredentials: true # 是否允许携带cookie
            maxAge: 360000 # 这次跨域检测的有效


GatewayApplication.java

package com.tt.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;

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

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">
    <parent>
        <artifactId>manage</artifactId>
        <groupId>com.example</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>tt-sc-gateway</artifactId>

    <dependencies>
        <!-- nacos 客户端 作为 注册与发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
        <!-- nacos 配置中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.2.4.RELEASE</version>
           <!-- <version>2.2.2.RELEASE</version>-->
            <exclusions>
                <!-- 排除web依赖-->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</project>

feignconsumer\feignprovide可参照Feign的demo
Spring Cloud 之 Feign 简介及简单DEMO的搭建

测试结果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

竞赛选题 深度学习人体语义分割在弹幕防遮挡上的实现 - python

文章目录 1 前言1 课题背景2 技术原理和方法2.1基本原理2.2 技术选型和方法 3 实例分割4 实现效果5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人体语义分割在弹幕防遮挡上的应用 该项目较为新颖&#xff0c;适合作为竞…

究竟如何?深入研究在缺少main.go文件时如何运行Go代码

是否可以在没有main.go文件的情况下运行Go代码&#xff1f; &#x1f600; 在Go语言中&#xff0c;包(package)是代码组织的基本单元&#xff0c;而可执行程序则需要一个特殊的main包和一个main函数。本篇博客将帮助您理解Go语言中包和可执行程序的概念&#xff0c;以及main.go…

【单片机毕业设计】【hj-006-7】CO、有害混合气体检测 | 空气质量检测 | 有害气体检测

一、基本介绍 项目名&#xff1a; 基于单片机的CO、有害混合气体检测系统设计 基于单片机的空气质量检测系统设计 基于单片机的有害气体检测系统设计 项目编号&#xff1a;mcuclub-hj-006-7 单片机类型&#xff1a;STC89C52 具体功能&#xff1a; 1、通过MQ-7检测CO值&#x…

hbase操作学习

1.namespace list_namespace 展示数据库 create_namespace 可以带属性名 属性值 create_namespace mydb,{author>hjp,ctime>2023-10-18}describe_namespace ‘库名’ 查看库的详细信息 alter_namespace ‘库名’ 修改表的详细信息 删除就是把method设置为unset dr…

STM32 __attribute__((section(“***“)))

1.在参考例程做STM32 IAP升级时遇到了关于__attribute__((section("***")))的问题&#xff0c;例程使用的是 uint8_t USART_RX_BUF[USART_REC_LEN] __attribute__ ((at(0X20001000))); 例程在使用CUBEIDE编译时提示warning: at attribute directive ignored [-Watt…

长钢管每米直线度检测 在线直线度测量仪轻松搞定!

钢管是一种常见的建筑材料&#xff0c;广泛应用于各种建筑和工程领域。钢管的直线度对于其使用性能和使用寿命具有重要影响&#xff0c;因此需要对钢管的直线度进行检测。传统的钢管直线度检测方法是通过测量多段钢管的直线度和弯头的角度来实现&#xff0c;这种方法不仅效率低…

Python常用语句(初学入门)不要一直做脚本小子

目录 一、判断语句 1、if语句 2、if-else语句 3、if-elif语句 4、if嵌套 二、循环语句 1、while循环 2、for循环 3、while嵌套 三、Python的其他语句 1、break语句 2、continue语句 3、pass语句 4、else语句 ~~~摆脱脚本小子&#xff0c;从现在开始学习Python~~~ …

将用友U8的数据可视化需要哪些工具?

将金蝶U8的数据可视化需要一个奥威BI数据可视化工具&#xff0c;以及一套专为用友U8打造的标准化BI数据分析方案。 奥威BI SaaS平台&#xff1a;一键链接用友U8&#xff0c;立得报表 别的BI软件围绕用友U8的数据做可视化&#xff1a;1、准备配置环境&#xff1b;2、下载安装配…

canvas绘制多种文字效果:描边,阴影,渐变色等

canvas可以绘制多种样式的文字效果&#xff1a;比如渐变&#xff0c;阴影&#xff0c;描边等效果&#xff0c;如下图&#xff1a; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta…

淘宝天猫商品详情接口(店铺所有商品接口,商品搜索列表接口)代码展示

业务背景&#xff1a;大家有探讨稳定采集淘宝天猫商品详情页面的数据包括App端和H5端及PC端&#xff0c;采集数据包括&#xff1a;获取商品列表主图、价格、标题&#xff0c;sku&#xff0c;商品评论日期&#xff0c;评论内容&#xff0c;评论图片&#xff0c;买家昵称&#xf…

动态天气预报:Living Weather HD for Mac

Living Weather HD能够为Mac用户提供及时、准确、个性化的天气信息&#xff0c;并提供了丰富的定制选项&#xff0c;使用户能够更加方便地查看天气状况。 具有以下特点&#xff1a; 显示世界各地的准确天气预报和当地时间。自动探测出用户所在的首个地点&#xff0c;并通过搜…

如何用滚动字幕丰富视频内容?只需5个步骤

视频制作需要各种元素来吸引观众的注意力&#xff0c;其中滚动字幕是一个非常实用的工具&#xff0c;可以提供背景信息&#xff0c;引导观众&#xff0c;或者作为一种装饰元素。以下是如何使用滚动字幕丰富视频内容的五个步骤&#xff1a; 1. 下载并安装适合的辅助工具 为了快速…

fault-localization-data下载配置

一、rjust-fault-localization-data下载配置 Ubuntu 22.04.03、运行环境为&#xff1a;jdk1.7 、ant1.8. 、maven 3.8. 所需文件下载地址JDK 7/1.7jdk-7u80-linux-x64.tar.gzFault-localization-dat地址 或者git clone https://bitbucket.org/rjust/fault-localization-data.…

C语言基于AVL树实现简单的文件数据库

目录 前言一、设计思路二、文件存储格式三、数据库操作3.1. 数据库结构3.2. 数据库初始化3.3. 插入3.4. 删除3.5. 修改3.6. 查询3.7. 清空 四、示例代码 前言 之前介绍了C语言实现AVL树&#xff0c; 本文是对AVL树的一个简单应用&#xff0c;在资源偏紧张的硬件设备中可以使用…

C++当中的IO流介绍 - operator 类型()的特殊用法

C语言当中的IO流 C语言中我们用到的最频繁的输入输出方式就是 scanf () 与 printf()。 scanf(): 从标准输入设备(键盘)读取数据&#xff0c;并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。 注意&#xff1a;宽度输出和精度输出控制。C语言借助…

数字图像处理实验记录二(直方图和直方图均衡化)

文章目录 一、基础知识1&#xff0c;什么是直方图2&#xff0c;直方图有什么用3&#xff0c;直方图均衡化4、原理代码实现 二、实验要求任务1&#xff1a;任务2&#xff1a; 三、实验记录任务1&#xff1a;任务2&#xff1a; 四、结果展示任务1&#xff1a;任务2&#xff1a; 五…

利用Cpolar永久免费内网穿透软件实现IStoreOS安装与远程访问

文章目录 前言1. ssh局域网登陆iStoreOS系统2. 安装Cpolar内 网穿透软件3. 测试公网远程链接4. 公网使用固定http地址远程访问iStoreOS webui界面 前言 iStoreOS系统是基于OpenWrt定制的软路由系统&#xff0c;提供了如轻nas&#xff0c;云盘&#xff0c;文件共享等众多网络服务…

【EI会议征稿】2024年智能电网与人工智能国际学术会议(SGAI 2024)

2024年智能电网与人工智能国际学术会议&#xff08;SGAI 2024) 2024 International Conference on Smart Grid and Artificial Intelligence 随着时代的发展&#xff0c;基础的电网技术已经比较成熟&#xff0c;但与日俱增的用电需求以及不断转变的用电模式促使我们需要不断地…

Go 存储系列:LSM存储引擎 LevelDB

概念介绍 LSM-Tree 被是一种面向写多读少应用场景的数据结构 &#xff0c;被 Hbase、RocksDB 等强力 NoSQL 数据库采用作为底层文件组织方式。 简单的LSM-Tree 包含 2 层树状数据结构&#xff1a; Memtable 并完全驻留在内存中&#xff08;假设 T0&#xff09; SStables 存储…

可视化(Visual) SQL初探

一、背景 在当今数字化时代&#xff0c;数据信息作为企业和组织的宝贵资源之一&#xff0c;如何挖掘其中的价值并帮助企业和组织个体决策&#xff0c;已然成为炙手可热的话题。数据分析作为其具体载体&#xff0c;是从数据中提取信息、洞察机遇、制定战略、做出决策的关键过程…