当前位置: 首页 > wzjs >正文

成都网站建设司能打开所有网址的浏览器

成都网站建设司,能打开所有网址的浏览器,即将发布的新品手机,临沂做网站选盛誉文章目录 前言✅ 1. **创建 Spring Boot 项目**Maven 依赖:Gradle 依赖: ✅ 2. **配置 application.yml 路由和过滤器**解释: ✅ 3. **创建自定义过滤器**3.1 **前置过滤器(Pre Filter)**3.2 **后置过滤器(…

文章目录

  • 前言
    • ✅ 1. **创建 Spring Boot 项目**
      • Maven 依赖:
      • Gradle 依赖:
    • ✅ 2. **配置 `application.yml` 路由和过滤器**
      • 解释:
    • ✅ 3. **创建自定义过滤器**
      • 3.1 **前置过滤器(Pre Filter)**
      • 3.2 **后置过滤器(Post Filter)**
      • 3.3 **全局过滤器**
    • ✅ 4. **负载均衡与服务发现**
      • `application.yml` 配置:
    • ✅ 5. **安全性:OAuth2 与 JWT**
      • 配置示例:
    • ✅ 6. **测试和监控**
      • 配置 Actuator:
    • ✅ 总结:


前言

好的,下面我给你提供一个具体的 Spring Cloud Gateway 实现案例。这个案例会涵盖以下内容:

  • 基本配置:如何在 Spring Boot 项目中集成 Spring Cloud Gateway。
  • 路由配置:定义 API 路由规则。
  • 过滤器:如何使用过滤器来处理请求和响应(包括前置过滤器、后置过滤器)。
  • 负载均衡:与服务发现(Eureka)集成,使用负载均衡的 API 网关。
  • 安全性:如何在网关层进行身份验证和授权(例如 OAuth2)。

✅ 1. 创建 Spring Boot 项目

确保你的 pom.xmlbuild.gradle 中包含以下依赖。

Maven 依赖:

<dependencies><!-- Spring Boot Starter WebFlux (需要使用异步/非阻塞的 WebFlux 作为 Gateway 基础) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><!-- Spring Cloud Gateway --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- Spring Cloud Config (可选,用于集中配置管理) --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><!-- Eureka Client (可选,服务发现) --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- Spring Boot Actuator (可选,用于监控和健康检查) --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
</dependencies>

Gradle 依赖:

dependencies {implementation 'org.springframework.boot:spring-boot-starter-webflux'implementation 'org.springframework.cloud:spring-cloud-starter-gateway'implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'implementation 'org.springframework.boot:spring-boot-starter-actuator'
}

✅ 2. 配置 application.yml 路由和过滤器

src/main/resources/application.yml 配置文件中,你可以定义基本的路由规则,类似于下面的例子:

spring:cloud:gateway:routes:- id: route_to_service_1uri: http://localhost:8081  # 目标服务的 URIpredicates:- Path=/service1/**  # 请求路径为 /service1/** 的请求将被路由到此服务filters:- AddRequestHeader=X-Request-Foo, Bar  # 添加请求头- RewritePath=/service1/(?<segment>.*), /${segment}  # 重写路径- id: route_to_service_2uri: lb://SERVICE2  # 使用负载均衡路由到 Eureka 注册的 SERVICE2 服务predicates:- Path=/service2/**# 自定义的全局过滤器default-filters:- name: RequestRateLimiterargs:redis-rate-limiter.replenishRate: 10redis-rate-limiter.burstCapacity: 20

解释:

  • uri:指定目标服务的 URI,可以是本地服务的地址(如 http://localhost:8081),也可以是通过服务发现(如 Eureka)的服务名(如 lb://SERVICE2)。
  • predicates:定义请求路由的条件。此例中,所有以 /service1/** 为路径的请求都会被路由到 http://localhost:8081
  • filters:对请求或响应进行修改(如添加请求头、重写路径等)。
  • RequestRateLimiter:用于限制请求的频率,可以防止滥用接口。

✅ 3. 创建自定义过滤器

Spring Cloud Gateway 允许你编写自定义的过滤器来对请求进行处理。

3.1 前置过滤器(Pre Filter)

前置过滤器用于在请求转发到目标服务之前处理请求,例如记录日志、添加请求头、身份验证等。

@Component
public class CustomPreFilter implements GatewayFilter, Ordered {private static final Logger logger = LoggerFactory.getLogger(CustomPreFilter.class);@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 获取请求路径String path = exchange.getRequest().getURI().getPath();logger.info("Incoming request: " + path);// 可以在此处添加请求头、检查授权等操作exchange.getRequest().mutate().header("X-Custom-Header", "customValue").build();return chain.filter(exchange);  // 继续过滤链}@Overridepublic int getOrder() {return 0;  // 设置优先级,数字越小越先执行}
}

3.2 后置过滤器(Post Filter)

后置过滤器用于请求经过目标服务处理后,但在返回给客户端之前进行处理。

@Component
public class CustomPostFilter implements GatewayFilter, Ordered {private static final Logger logger = LoggerFactory.getLogger(CustomPostFilter.class);@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {return chain.filter(exchange).then(Mono.fromRunnable(() -> {// 这里可以对响应进行处理logger.info("Response sent with status: " + exchange.getResponse().getStatusCode());}));}@Overridepublic int getOrder() {return 1;  // 设置优先级}
}

3.3 全局过滤器

全局过滤器适用于所有路由,它们可以在路由规则之外做一些全局处理。

@Component
public class GlobalFilterExample implements GlobalFilter, Ordered {private static final Logger logger = LoggerFactory.getLogger(GlobalFilterExample.class);@Overridepublic Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {logger.info("Global filter triggered, path: " + exchange.getRequest().getURI().getPath());return chain.filter(exchange);  // 继续过滤链}@Overridepublic int getOrder() {return 0;  // 设置优先级}
}

✅ 4. 负载均衡与服务发现

如果你使用 Eureka,Spring Cloud Gateway 能与 Eureka 无缝集成,自动支持服务发现和负载均衡。

application.yml 配置:

spring:cloud:gateway:routes:- id: route_to_serviceuri: lb://SERVICE_NAME  # lb://SERVICE_NAME 会通过 Eureka 自动查找predicates:- Path=/service/**  # 匹配请求路径
  • lb://:代表负载均衡的服务名称,Spring Cloud Gateway 会自动与 Eureka 进行集成,从而获取注册的服务。
  • 使用 Ribbon 进行负载均衡。

✅ 5. 安全性:OAuth2 与 JWT

Spring Cloud Gateway 也能与 OAuth2JWT 集成,进行请求的认证和授权。

配置示例:

spring:cloud:gateway:routes:- id: secure_routeuri: http://localhost:8081predicates:- Path=/secure/**filters:- name: RequestHeaderToRequestUriargs:name: Authorization

你可以通过 Spring SecurityOAuth2 集成,对请求进行授权认证。


✅ 6. 测试和监控

Spring Cloud Gateway 还内建了监控与健康检查功能,集成了 Spring Boot Actuator

配置 Actuator:

management:endpoints:web:exposure:include: health,metrics,gateway

通过 /actuator/gateway/routes 可以查看当前网关的路由状态和信息。


✅ 总结:

Spring Cloud Gateway 是一个高性能的 API 网关,它的优点包括:

  • 与 Spring 生态无缝集成:非常适合 Spring Boot 和 Spring Cloud 项目。
  • 强大的路由和过滤功能:支持动态路由、限流、日志记录等功能。
  • 支持负载均衡和服务发现:与 Eureka、Consul 集成,支持服务发现。
  • 灵活的过滤器支持:自定义前置、后置过滤器以及全局过滤器。

如果你的项目使用 Spring Cloud 架构,Spring Cloud Gateway 是首选的 API 网关解决方案。



文章转载自:

http://SPz2TUcF.tqrxm.cn
http://L3oNbmBh.tqrxm.cn
http://tfSmk1t1.tqrxm.cn
http://LMguAGRq.tqrxm.cn
http://boG50vpT.tqrxm.cn
http://QS7GrKum.tqrxm.cn
http://X9kprDfa.tqrxm.cn
http://FTxXVrDQ.tqrxm.cn
http://lk22ZipN.tqrxm.cn
http://yJM11yxq.tqrxm.cn
http://EEmvI5zh.tqrxm.cn
http://NfZNLQow.tqrxm.cn
http://eaZg4eD2.tqrxm.cn
http://mYAz1z7y.tqrxm.cn
http://rDTrKKcs.tqrxm.cn
http://ojdZbCoo.tqrxm.cn
http://5BkLq0Mc.tqrxm.cn
http://SLSZQUvo.tqrxm.cn
http://nVkBwWGx.tqrxm.cn
http://zEwUyeSk.tqrxm.cn
http://FBrj1uP5.tqrxm.cn
http://5Ot9k1hI.tqrxm.cn
http://k4DomJJF.tqrxm.cn
http://6sGW4a7N.tqrxm.cn
http://RSq6iUcv.tqrxm.cn
http://RH518zzK.tqrxm.cn
http://fQCIVvFl.tqrxm.cn
http://1fj1ceAb.tqrxm.cn
http://guOVJiqf.tqrxm.cn
http://O2MHtP7A.tqrxm.cn
http://www.dtcms.com/wzjs/637766.html

相关文章:

  • 手机网站你懂wordpress插件的安装目录
  • 网站建设与管理需要哪些证书想接做网站的单子
  • html怎么做网站首页2021年中国十大电商平台排名
  • 佛山免费网站建设seo 网站树
  • 专业网站建设设计考研培训机构排名前十
  • 怎样做网站背景网站生成pc应用
  • 安徽索凯特建设工程有限公司网站天津 论坛网站制作公司
  • 自贡住房和城乡建设厅网站vps网站打开需要身份验证
  • 邯郸网络运营中心电话多少郑州seo公司
  • 网站代理怎么设置免费网络推广网站大全
  • 做网站买什么笔记本好个人简历表格模板
  • 华为公司网站建设方案上海网站建设开发
  • 做设计的一般在什么网站找素材公司logo墙
  • 茂名网站建设托管用爬虫做数据整合网站
  • 唐山建站方案房管局网站做房查
  • 宁波网站建设就找荣胜自己做的微课上传到哪个网站
  • 怎么在windows做网站莱芜吧贴吧
  • 乐陵网站服务在哪一条企业logo设计说明
  • 网站设计报价怎么做flash网站as
  • 青岛模板做网站凡科网站产品导航怎么做
  • 上传网站图片不显示网站开发浏览器分辨率
  • wordpress企业门户网站拼多多卖网站建设
  • 郑州高端网站建设团队杭州搜索引擎推广排名技术
  • 网站建设与管理介绍产品营销网站建设
  • 网站建设的步骤及方法黑龙江建设网官方
  • 上海迈诺网站建设wordpress 开发框架
  • 建设网站要用什么软件wordpress做网站过程
  • 廊坊网站制作建设做网站推广公司
  • 现在最流行的网站开发工具餐饮系统的网站应该怎么做
  • 大型网站服务器价格重庆建设厅的网站首页