【网络】gateway 可以提供的一些功能之二 “ 提供Restful服务器路由转发 ”

一、提供web静态资源服务

Web静态资源服务是指通过HTTP协议提供静态文件(如HTML、CSS、JavaScript、图片、字体等)的服务。这些静态资源文件不经过服务器端处理,直接由客户端(如浏览器)请求并加载。提供Web静态资源服务可以使客户端能够访问并展示网站的静态内容,如网页布局、样式、交互等。
详情参考【网络】gateway 可以提供的一些功能之一 “ 提供web静态资源服务 ”

二、提供Restful服务器路由转发

要在网关中提供RESTful服务的路由转发,你可以使用 Spring Cloud Gateway 或其他类似的网关工具来配置路由规则。

2.1、简单示例

以下是一个简单的示例,演示如何使用Spring Cloud Gateway进行RESTful服务的路由转发:

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class GatewayConfig {@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route("users_route", r -> r.path("/users/**") // 匹配/users/**路径.uri("http://user-service:8080")) // 转发到用户服务.route("products_route", r -> r.path("/products/**") // 匹配/products/**路径.uri("http://product-service:8080")) // 转发到产品服务.build();}
}

在这个示例中,假设有两个RESTful服务,分别是用户服务和产品服务,它们分别运行在 http://user-service:8080http://product-service:8080 。网关将会根据请求的路径,将匹配到的请求转发到相应的后端服务上。

这里的关键是配置路由规则,使用 path 方法匹配 RESTful API 的路径,并使用uri方法指定转发的目标URL。当客户端发送请求时,网关会根据路由规则将请求转发到相应的后端服务上进行处理。

你可以根据实际需求和项目结构,配置更多的路由规则和参数,以实现更复杂的RESTful服务路由转发。同时,还可以结合其他功能,如断路器、限流、日志记录等,来完善网关的功能。

2.2、动态配置的路由转发

对于需要动态配置的路由转发,你可以使用一些灵活的配置方式,例如基于配置文件、数据库、注册中心等。以下是一些常见的实现方法:

  • 基于配置文件:将路由规则配置在外部的配置文件中,例如YAML或properties文件。然后在网关启动时读取这些配置文件,并动态加载路由规则。这种方式适合静态路由规则,不需要频繁变更的情况。
  • 基于数据库:将路由规则存储在数据库中,网关启动时从数据库中读取路由配置信息,并动态加载路由规则。这种方式适合需要频繁变更路由规则的场景,可以通过数据库管理工具或API进行动态更新。
  • 基于注册中心:结合服务注册与发现功能,网关可以从注册中心(如Eureka、Consul等)获取服务实例信息和路由规则。当新的服务实例注册或注销时,网关可以自动更新路由配置。
  • 结合配置中心:使用配置中心(如Spring Cloud Config、Apollo等)来管理路由配置,网关从配置中心获取路由规则信息。可以通过配置中心的UI界面或API来动态更新路由规则。

以下是一个基于配置文件的示例,演示如何动态加载路由规则:

# gateway-routes.yml
routes:- id: users_routeuri: http://user-service:8080predicates:- Path=/users/...- id: products_routeuri: http://product-service:8080predicates:- Path=/products/...

然后在Spring Boot的配置类中加载这个配置文件:

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternUtils;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.util.FileCopyUtils;@Configuration
public class GatewayConfig {@Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();Resource resource = resourceResolver.getResource("classpath:gateway-routes.yml");String routesContent = FileCopyUtils.copyToString(new InputStreamReader(resource.getInputStream()));return builder.routes().route("dynamic_routes", r -> r.order(0).uri("http://non-existing-service") // 这里设置一个不存在的URL,路由规则加载后会替换成真实的URI.predicate(p -> p.readBody(String.class, requestBody -> {// 从请求体中获取动态路由配置return routesContent;}))).build();}
}

在这个示例中,gateway-routes.yml 是存放动态路由配置的文件。在customRouteLocator 方法中,通过读取这个配置文件的内容,并使用 predicate 方法将动态路由规则加载到网关中。当请求到来时,网关会根据请求体中的内容动态更新路由规则,实现动态路由转发。

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

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

相关文章

Jenkins持续化集成

优质博文:IT-BLOG-CN 工作过程如下环境准备 开发人员提交代码>jenkins获取代码>调用单元测试>打包>发布 环境准备Jenkins的安装 Tomcat、Maven、Git或Svn、Jdk Jenkins的安装 1、官网下载war :http://Jenkins-ci.org/ 2、tomcat-users.…

NTFS文件权限管理

实验环境 windows server 2016 实验要求 实验步骤 1、 新建文件 2、打开文件夹的属性->安全->高级 3、禁用继承 4、添加组或用户 技术资料: 常用软件: 手机端项目: 电脑端项目: 公司制度: 销售资源&#xff…

【Scala---01】Scala『 Scala简介 | 函数式编程简介 | Scala VS Java | 安装与部署』

文章目录 1. Scala简介2. 函数式编程简介3. Scala VS Java4. 安装与部署 1. Scala简介 Scala是由于Spark的流行而兴起的。Scala是高级语言,Scala底层使用的是Java,可以看做是对Java的进一步封装,更加简洁,代码量是Java的一半。 因…

JAVA读取从WPS在Excel中嵌入的图片资源

读取从WPS在Excel中嵌入的图片资源 引言 许多数据文件中可能包含嵌入式图片,这些图片对于数据分析和可视化非常重要。然而,从 WPS 在 Excel 中读取这些图片可能会有一些技术挑战。在本文中,我将展示如何从 WPS Excel 文件中读取嵌入的图片&am…

海外三大AI图片生成器对比(Stable Diffusion、Midjourney、DALL·E 3)

Stable Diffusion DreamStudio 是Stable Diffusion 的官方网页,价格便宜,对图片的操作性强,但同时编辑页面不太直观,对使用者的要求较高。 与 DALLE 和 Midjourney 不同,Stable Diffusion 是开源的。这也意味着&…

pytorch运行物体检测模型 SSD

物体检测是指根据一张图片包含的多个物体,通过模型分析物体的信息,最终给出图片中物体的位置以及物体的分类名称。物体检测输入的是一张图片,图片上包含多个物体,输出包括 图片中物体的位置和大小的相关信息物体的分类标签名称检…

linux tcpdump的交叉编译以及使用

一、源码下载 官网:点击跳转 二、编译 1、解压 tar -xf libpcap-1.10.4.tar.xz tar -xf tcpdump-4.99.4.tar.xz 2、配置及编译 //libpcap: ./configure --hostarm-linux --targetarm-linux CCarm-linux-gcc --with-pcaplinux --prefix$PWD/build//t…

企业如何保证内部传输文件使用的工具是安全的?

企业内部文件的频繁交换成为了日常运营不可或缺的一环。然而,随着数据量的爆炸式增长和网络攻击手段的日益复杂,内网文件传输的安全隐患也日益凸显,成为企业信息安全的薄弱环节。本文将探讨内网文件传输的安全风险、企业常用的防护措施。 内网…

Django之搭配内网穿透

一,安装coplar 二,开启8087的内网穿透 三,setting.py中加入如下配置: ALLOWED_HOSTS [*]CSRF_TRUSTED_ORIGINS ["https://localhost:8087", "http://localhost:8087"]四,启动项目 五&#xff…

Chrome您的连接不是私密连接 |输入“thisisunsafe”命令绕过警告or添加启动参数

一、输入 thisisunsafe 在当前页面用键盘输入 thisisunsafe ,不是在地址栏输入(切记),就直接敲键盘就行了 因为Chrome不信任这些自签名ssl证书,为了安全起见,直接禁止访问了,thisisunsafe 这个命令,说明你…

STM32之HAL开发——ADC入门介绍

ADC简介 模数转换,即Analog-to-Digital Converter,常称ADC,是指将连续变量的模拟信号转换为离散的数字信号的器件,比如将模温度感器产生的电信号转为控制芯片能处理的数字信号0101,这样ADC就建立了模拟世界的传感器和…

第4篇:创建Nios II工程之Hello_World<三>

Q:接着我们再来完成Nios II软件工程设计部分。 A:从Quartus Tools选择Nios II Software Build Tools for Eclipse,打开Nios II SBT软件,Workspace指定到hello_world工程的software文件夹路径;再从File-->New-->…

Linux命令大全 以及搭建hadoop

Liunx系统目录 ├── bin -> usr/bin # 用于存放二进制命令 ├── boot # 内核及引导系统程序所在的目录 ├── dev # 所有设备文件的目录(如磁盘、光驱等) ├── etc # 配置文件默认路径、服务启动命令存放目录 ├── home # 用户家目录&#…

上位机图像处理和嵌入式模块部署(树莓派4b设置ftp下载)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 作为一个开发板,最好支持ftp下载,这样文件的上传和下载都会比较方便。虽然目前为止,利用mobaxterm和ssh也能实现…

ObjectARX特性面板OPM添加动态属性

参考资料 AutoCAD与动态属性PDF文档 https://www.progdomain.com/584/ObjectARX2016 OPM面板全攻略 https://blog.csdn.net/jfmyes/article/details/121392332 准备工作——正确安装ARX和Wizards ARX和VS的版本对应、ObjectArx(2010~2020)工程创建、类添加及错误处理 https:…

C语言内存函数及模拟实现

之前写的字符函数都只针对字符串,而内存函数是针对内存的,不在乎内存里面是什么。 目录 memcpy函数介绍模拟实现 memmove函数介绍模拟实现 memset函数介绍 memcmp memcpy 函数介绍 void * memcpy ( void * destination, const void * source, size_t n…

什么是ar.exe?

2024年4月28日,周日上午 ar.exe 是一个用于创建、修改以及提取静态库(archive)文件的工具。静态库是一种包含已编译目标文件的归档文件,通常用于代码的静态链接。ar 工具通常与 C/C 编译器一起使用,用于创建和管理静态…

《从Paxos到Zookeeper》——第四、七章:基本概念及原理

目录 第四章 Zookeeper与Paxos 4.1 Zk是什么 4.1.1 Zk特性 4.1.2 Zk基本概念 4.1.2.1 集群角色(Follower, Leader, Observer) 4.1.2.2 数据模型 4.1.2.3 ZNode(数据节点) 4.1.2.4 Session(会话) 4.1.2.5 ACL(Access Control Lists) 4.1.2.6 Watcher(事件…

如何用OceanBase的 Load Data 导入CSV文件

0 前言 CSV文件(Comma-Separated Values,字符分隔值)是一种普遍采用的数据存储格式,有不少企业和机构都用它来进行数据的管理和存储。身为开发者,您可能经常遇到这样的需求:需要将CSV的数据导入OceanBase数…

OpenCV如何实现背投

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV直方图比较 下一篇 :OpenCV系列文章目录(持续更新中......) 目标 在本教程中,您将学习: 什么是背投以及它为什么有用如何使用 Ope…