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

(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: devapplication:name: tt-sc-gatewaycloud:nacos:username: nacospassword: nacosconfig:server-addr: 192.168.xx.xxx:8848file-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: truediscovery:server-addr: 192.168.xx.xxx:8848

application-dev.yml

spring:cloud:gateway:discovery:locator:# 是否与服务发现组件进行结合,通过 serviceId 转发到具体的服务实例。默认为falseenabled: truelower-case-service-id: true #使用小写service-idroutes: # 网关路由配置- 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: feignprovideuri: lb://tt-sc-feign-providepredicates:- 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 # 是否允许携带cookiemaxAge: 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.mzph.cn/news/116427.shtml

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

相关文章

微信小程序WeUI项目weui-miniprogram如何运行起来?

微信小程序WeUI项目weui-miniprogram如何运行起来&#xff1f; 解决方法: 1、下载 https://github.com/wechat-miniprogram/weui-miniprogram 2、在项目根目录weui-miniprogram-master执行以下命令安装依赖&#xff1a; npm install 3、继续执行编译命令&#xff1a; npm r…

Unity3D 基础——鼠标悬停更改物体颜色,移走恢复

方法介绍 【unity学习笔记】OnMouseEnter、OnMouseOver、OnMouseExit_unity onmouseover_一白梦人的博客-CSDN博客https://blog.csdn.net/a1208498468/article/details/117856445 GetComponent()详解_getcomponet<> 动态名称-CSDN博客https://blog.csdn.net/kaixindrag…

C# 写入文件比较

数据长度&#xff1a;128188个long BinaryWriter每次写一个long 耗时14.7828ms StreamWriter每次写一个long 耗时44.0934 ms FileStream每次写一个long 耗时20.5142 ms FileStream固定chunk写入&#xff0c;循环操作数组&#xff0c;耗时13.4126 ms byte[] chunk new byte[d…

国际物流报关流程

国际物流报关流程如下&#xff1a; 准备资料&#xff1a;根据国家和地区的要求&#xff0c;准备相关的报关资料&#xff0c;包括进出口货物清单、运输合同、发票、装箱单等文件。 海关申报&#xff1a;将准备好的报关资料递交给海关申报&#xff0c;海关会根据报关单上的信息对…

1. 前缀码判定

题目 前缀码&#xff1a;任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。 请编写一个程序&#xff0c;判断输入的n个由1和0组成的编码是否为前缀码。如果这n个编码是前缀码&#xff0c;则输出"YES”&#xff1b;否则输出第一个与前面编码发生矛盾的编码。…

牛客网刷题-(2)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

jvm垃圾回收算法有哪些及原理

目录 垃圾回收器1 Serial收集器2 Parallel收集器3 ParNew收集器4 CMS收集器5 G1回收器三色标记算法标记算法的过程三色标记算法缺陷多标漏标 垃圾回收器 垃圾回收机制&#xff0c;我们已经知道什么样的对象会成为垃圾。对象回收经历了什么——垃圾回收算法。那么谁来负责回收垃…

华为云 CodeArts Snap 智能编程助手 PyCharm 插件安装与使用指南

1 插件安装下载 1.1 搜索插件 打开 PyCharm&#xff0c;选择 File&#xff0c;点击 Settings。 选择 Plugins&#xff0c;点击 Marketplace&#xff0c;并在搜索框中输入 Huawei Cloud CodeArts Snap。 1.2 安装插件 如上图所示&#xff0c;点击 Install 按钮安装 Huawei Cl…

2. 计算WPL

题目 Huffman编码是通信系统中常用的一种不等长编码&#xff0c;它的特点是&#xff1a;能够使编码之后的电文长度最短。 更多关于Huffman编码的内容参考教材第十章。 输入&#xff1a; 第一行为要编码的符号数量n 第二行&#xff5e;第n1行为每个符号出现的频率 输…

npm install报错 缺少python

报错信息&#xff1a; Building:E:tolsnvmnodesnodeexe : ode emos ant-desig-we-eos odemodules node-gypbintnode-gp.s rebld -verbose -Libsass_ext --Libsas_cflags- lags --libsass_librarygyp info it worked if it ends with ok gyp verb cli [ gyp verb cliE: toolsnv…

一步一步认知机器学习

1&#xff0c;前言 之前学习并且实操了一些算法框架用来探索相关方向的可能性&#xff0c;但是总不了解相关的步骤。因为一步一步按照别人给出的步骤去操作&#xff0c;解决一些操作时出现的问题&#xff0c;基本可以达到目的。但是这个也基本限制了在那个框架而已。对于算法还…

Socket 是什么? 总结+详解

文章摘要&#xff1a;Socket 套接字 编程接口 netstat-ano 创建 建立连接 断开 删除 1.Socket 是什么 Socket &#xff1a;套接字&#xff08;socket&#xff09;是一个抽象层&#xff0c;应用程序可以通过它发送或接收数据&#xff0c;可对其进行像对文件一样的打开、读写和…

SpringBoot的日志系统(日志分组、文件输出、滚动归档)

[toc](目录) > SpringBoot3需要jdk17 # 1. 简介 1. Spring5及以后Spring自己实现了commons-logging&#xff0c;来作为内部的日志。日志的jar包是org.springframework:spring-jcl:6.0.10。查看org.apache.commons.logging.LogAdapter Java package org.apache.commons.log…

如何把Elasticsearch中的数据导出为CSV格式的文件

前言| 本文结合用户实际需求用按照数据量从小到大的提供三种方式从ES中将数据导出成CSV形式。本文将重点介Kibana/Elasticsearch高效导出的插件、工具集&#xff0c;通过本文你可以了解如下信息&#xff1a; 1&#xff0c;从kibana导出数据到csv文件 2&#xff0c;logstash导…

VMware vCenter Server 6.7安装过程记录

0、前言 最近由于一些原因需要安装测试VMware ESXi&#xff0c;无奈所有服务器都是十几年前的&#xff0c;配置低也不支持。后来通过VMware兼容性列表查询&#xff0c;快要放弃的时候发现唯一一台Dell R420&#xff0c;如获至宝。通过查询得知最高支持到6.5 U3&#xff0c;好在…

十三水中各种牌型判断LUA版

近期回归程序行业&#xff0c;由于业务需求需要做十三水游戏&#xff0c;什么是十三水就不在多讲&#xff0c;下面是判断十三水牌型的方法&#xff08;带大小王&#xff09; GetSSSPaiType {}; local this GetSSSPaiType; local huaseTable {}; local numTable {}; functi…

在亚马逊购买产品时怎么选择自动收货方式

在亚马逊购买产品时&#xff0c;通常可以在下单时选择不同的收货方式&#xff0c;包括自动收货方式。以下是一般的购买流程&#xff1a; 登录亚马逊账号&#xff1a;打开网站&#xff0c;登录账号&#xff0c;如果没有账号&#xff0c;可以先创建一个。 浏览和添加商品&#…

SpringBoot原理篇

SpringBoot原理篇 ​ 其实从本人的角度出发&#xff0c;看了这么多学习java的小伙伴的学习过程&#xff0c;个人观点&#xff0c;不建议小伙伴过早的去研究技术的原理。原因有二&#xff1a;一&#xff0c;先应用熟练&#xff0c;培养技术应用的条件反射&#xff0c;然后再学原…

v4l2-ioctl.c的一些学习和整理

可以发现&#xff0c;这个宏用的很好&#xff0c;简洁易扩展&#xff0c;自己写代码可以学习下 #define IOCTL_INFO(_ioctl, _func, _debug, _flags) \[_IOC_NR(_ioctl)] { \.ioctl _ioctl, \.flags _flags, \.name #_ioctl, \.func _func, \.debug _…

element table中嵌套el-select 无法选择问题

<el-table-column align"left" label"姓名" show-overflow-tooltip :key"tableKey"><template slot-scope"scope"><el-select placeholder"请选择" :disabled"!saveButton" v-model"scope.ro…