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

驻马店做网站的公司在线做文档的网站

驻马店做网站的公司,在线做文档的网站,建设银行联号查询网站,网站内容维护有哪些方面Spring Cloud Gateway 是一个功能强大的 API 网关#xff0c;能够处理 HTTP 请求、响应及路由。通过过滤器机制#xff0c;您可以在请求和响应过程中进行各种处理操作#xff0c;如记录日志、身份验证、限流等。Spring Cloud Gateway 提供了三种主要类型的过滤器#xff1a… Spring Cloud Gateway 是一个功能强大的 API 网关能够处理 HTTP 请求、响应及路由。通过过滤器机制您可以在请求和响应过程中进行各种处理操作如记录日志、身份验证、限流等。Spring Cloud Gateway 提供了三种主要类型的过滤器全局过滤器、局部过滤器和自定义条件过滤器。本文将详细介绍如何在 Spring Cloud Gateway 中创建和使用这些过滤器。 1. 全局过滤器Global Filter 全局过滤器是应用于所有请求的过滤器无论请求被路由到哪个目标服务都会先经过这些过滤器。全局过滤器适用于需要对所有请求进行操作的场景如日志记录、请求限流、身份验证等。 创建全局过滤器的步骤 步骤 1实现 GlobalFilter 接口 要创建全局过滤器您需要实现 GlobalFilter 接口并重写 filter 方法。以下是一个简单的全局过滤器它记录请求的开始时间并在请求完成后输出请求的处理时长。 示例代码全局过滤器 import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import reactor.core.publisher.Mono; import lombok.extern.slf4j.Slf4j;Component Slf4j public class MyGlobalFilter implements GlobalFilter {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 记录开始时间long startTime System.currentTimeMillis();exchange.getAttributes().put(startTime, startTime);// 继续执行后续过滤器return chain.filter(exchange).then(Mono.fromRunnable(() - {// 计算并输出请求时长long endTime System.currentTimeMillis();long duration endTime - startTime;log.info(Request completed in duration ms);}));} }步骤 2设置过滤器的执行顺序可选 GlobalFilter 接口继承自 Ordered 接口您可以通过 getOrder() 方法设置过滤器的执行顺序。返回值越小优先级越高。 Override public int getOrder() {return -1; // 高优先级 }步骤 3配置全局过滤器 使用 Component 注解注册全局过滤器Spring 会自动将其作为全局过滤器进行管理。 2. 局部过滤器Local Filter 局部过滤器是应用于特定路由或请求路径的过滤器。它仅在匹配特定路由或条件时执行适用于只对某些服务、路径或请求类型进行处理的场景。 创建局部过滤器的步骤 步骤 1实现 GatewayFilter 接口 局部过滤器需要实现 GatewayFilter 接口。以下是一个简单的局部过滤器它检查请求的路径并在符合条件时记录日志。 示例代码局部过滤器 import org.springframework.stereotype.Component; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; import lombok.extern.slf4j.Slf4j;Component Slf4j public class MyLocalFilter implements GatewayFilter {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 获取请求路径String path exchange.getRequest().getURI().getPath();log.info(Request path: path);// 继续执行后续过滤器return chain.filter(exchange);} }步骤 2通过 RouteLocator 配置路由 在 Spring Cloud Gateway 中您可以通过 RouteLocator 或 YAML 配置文件为特定的路由添加局部过滤器。 示例代码配置局部过滤器 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.RouteLocatorBuilder;Configuration public class GatewayConfig {Beanpublic RouteLocator customRouteLocator(RouteLocatorBuilder builder) {return builder.routes().route(my_route, r - r.path(/api/**) // 匹配 /api/** 路径的请求.filters(f - f.filter(new MyLocalFilter())) // 应用 MyLocalFilter.uri(http://example.com)) // 目标服务.build();} }在这个例子中我们创建了一个名为 my_route 的路由它只对 /api/** 路径的请求应用 MyLocalFilter 过滤器。 方法二基于 YAML 配置 如果你使用 YAML 配置文件来配置路由也可以在 application.yml 文件中指定过滤器。 spring:cloud:gateway:routes:- id: example_routeuri: http://example.compredicates:- Path/api/v1/**filters:- name: MyLocalFilter # 使用你定义的过滤器为了通过 YAML 使用自定义过滤器你需要确保在配置中通过 Spring Bean 名称引用该过滤器。若 MyLocalFilter 被 Spring 管理通过 Component可以直接使用 name 来引用。 3. 自定义条件过滤器Custom Condition Filter 自定义条件过滤器是根据特定的条件如请求的查询参数、请求头或路径等来动态决定是否执行过滤器。这种过滤器提供了更高的灵活性和复杂的过滤逻辑。 创建自定义条件过滤器的步骤 步骤 1继承 AbstractGatewayFilterFactory 创建过滤器工厂 Spring Cloud Gateway 提供了 AbstractGatewayFilterFactory 类允许您创建自定义的过滤器工厂。您可以在工厂中设置过滤器的配置项并根据条件来执行过滤逻辑。 示例代码自定义条件过滤器 import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.web.server.ServerWebExchange; import org.springframework.web.server.ServerHttpRequest; import org.springframework.http.HttpStatus; import reactor.core.publisher.Mono;import java.util.Arrays; import java.util.List;Component public class MyGatewayFilterFactory extends AbstractGatewayFilterFactoryMyGatewayFilterFactory.Config {public MyGatewayFilterFactory() {super(MyGatewayFilterFactory.Config.class); // 指定配置类}Overridepublic GatewayFilter apply(MyGatewayFilterFactory.Config config) {// 创建实际的过滤器return new GatewayFilter() {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {ServerHttpRequest request exchange.getRequest();System.out.println(进入了自定义网关过滤器status config.getStatus());// 检查请求的查询参数if (request.getQueryParams().containsKey(atguigu)) {return chain.filter(exchange); // 继续请求} else {exchange.getResponse().setStatusCode(HttpStatus.BAD_REQUEST); // 返回 400 错误return exchange.getResponse().setComplete(); // 完成响应}}};}// 配置快捷字段的顺序Overridepublic ListString shortcutFieldOrder() {return Arrays.asList(status); // 配置字段名}// 配置类保存过滤器的参数public static class Config {private String status; // 配置字段public String getStatus() {return status;}public void setStatus(String status) {this.status status;}} }步骤 2在配置文件中应用自定义过滤器 您可以通过 YAML 或 Java 配置文件指定在哪些路由上应用此自定义条件过滤器并传递参数。 示例代码在 application.yml 中配置自定义过滤器 spring:cloud:gateway:routes:- id: my_routeuri: http://example.compredicates:- Path/api/** # 匹配 /api/** 路径的请求filters:- name: MyGatewayFilterFactory # 引用自定义的过滤器args:status: active # 配置 status 参数4. 过滤器类型比较 特性全局过滤器 (Global Filter)局部过滤器 (Local Filter)自定义条件过滤器 (Custom Condition Filter)适用范围所有请求特定路由或路径的请求基于特定条件如请求参数、路径等动态判断是否执行使用场景日志记录、全局认证、全局限流等特定服务或路径的处理根据条件如请求参数、头部等动态处理请求配置方式通过实现 GlobalFilter 接口并注册为 Spring Bean通过 RouteLocator 或 YAML 配置路由通过 AbstractGatewayFilterFactory 创建工厂 5. 总结 在 Spring Cloud Gateway 中您可以根据不同的需求创建三种类型的过滤器 全局过滤器适用于需要对所有请求进行统一处理的场 景例如日志记录、认证和授权。 局部过滤器适用于特定路由或路径的请求能够灵活地控制不同服务的请求处理。自定义条件过滤器根据请求的特定条件如查询参数、请求头、路径等动态决定是否执行过滤器逻辑提供更高的灵活性。
http://www.w-s-a.com/news/433267/

相关文章:

  • php和网站开发网络软营销
  • 大型做网站的公司有哪些wordpress注册链接无效
  • 推荐门户网站建设公司网站开发移动端
  • 公司网站的栏目设置成都十大监理公司排名
  • 安溪住房和城乡建设网站关岭县建设局网站
  • 网站域名注销备案徐州房产网
  • 筑聘网windows优化大师自动安装
  • 龙华高端网站设计门户网站建设方案公司
  • 网站开发作用网站建设哪家专业
  • 网站设计报告总结南宁商城网站推广公司
  • 淘宝做店招的网站免费网站建设自助建站
  • 重庆工信部网站绵阳公司网站建设
  • 购物网站开发流程制作企业网页
  • 定州哪里可以做网站建设项目环境影响登记表备案系统网站
  • 网站建设费属于广告费小猪网站怎么做的
  • 国内优秀设计网站站长哈尔滨微网站建设
  • 如何建设一个优秀的电商网站沐风seo
  • 从零开始学网站建设知乎安防网站下载
  • 打开网站弹出qq应用软件有哪些
  • 温州网站建设seo网站 如何做 中英文切换
  • 聊城做网站的公司资讯信阳 网站建设
  • 天津市工程建设交易网站查汗国珠海 网页设计
  • 龙果学院大型网站稳定性建设汾阳做网站
  • 湖北 个人网站备案时间域名查询备案查询
  • 网站推广方式校园网站怎么建
  • 长沙seo网站排名怎么在百度发帖
  • 织梦贷款网站模板做印章网站
  • 彭州做网站上海百度网络推广
  • 广州网站搭建快速提升网站排名荧光字网站
  • 15年做那些网站能致富做seo是什么意思