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

网站的页面风格是什么东莞大岭山镇网站建设

网站的页面风格是什么,东莞大岭山镇网站建设,什么是理财北京网站建设公司,怎么可以建网站目录 概念#xff1a; 三大核心#xff1a; 工作流程#xff1a; 9527网关如何做路由映射#xff1a; GetWay高级特性#xff1a; 按服务名动态路由服务#xff1a; 断言Route Predicate Factories #xff1a; 获取当前时区时间#xff1a; After Route 三大核心 工作流程 9527网关如何做路由映射 GetWay高级特性 按服务名动态路由服务 断言Route Predicate Factories  获取当前时区时间  After Route   例 BeforeBetween 同理 Cookie Route  Header Route  自定义断言 Filter过滤器 1. Filter的作用 2. Filter的分类 1. Pre Filter前置过滤器 2. Post Filter后置过滤器 3. Error Filter错误过滤器 例 请求头AddRequestHeader  请求参数 RemoveRequestParameter和AddRequestParameter 请求回应ResponseHeader 前缀和路径相关组  全局过滤器:  自定义条件Filter  概念 微服务中网关在哪里 三大核心 Route路由 Predicate断言Filter过滤器 工作流程 核心逻辑路由转发断言判断执行过滤器链 9527网关如何做路由映射 前提 我们需要提前把GeteWay服务注册到consul当中 核心配置yml server:port: 9527spring:application:name: cloud-gateway #以微服务注册进consul或nacos服务列表内cloud:consul: #配置consul地址host: localhostport: 8500discovery:prefer-ip-address: trueservice-name: ${spring.application.name}gateway:routes:- id: pay_routh1 #pay_routh1 #路由的ID(类似mysql主键ID)没有固定规则但要求唯一建议配合服务名uri: http://localhost:8001 #匹配后提供服务的路由地址predicates:- Path/pay/gateway/get/** # 断言路径相匹配的进行路由- id: pay_routh2 #pay_routh2 #路由的ID(类似mysql主键ID)没有固定规则但要求唯一建议配合服务名uri: http://localhost:8001 #匹配后提供服务的路由地址predicates:- Path/pay/gateway/info/** # 断言路径相匹配的进行路由 隐真示假 让用户不知道我们真正的地址 没有使用GeteWay之前访问的路径是 http://localhost:8001/pay/gateway/get/1 使用了GeteWay之后可以使用http://localhost:9527/pay/gateway/get/1 将feignclient请求的微服务更改为注册中心的geteway 先启动 8001微服务和feign80可以看到请求失败 启动9527网关后请求成功说明现在请求微服务必须通过geteway配置成功  GetWay高级特性 按服务名动态路由服务 格式  uri:lb://service 微服务名为cloud-payment-service通过使用注册中心的微服务名称就可以动态的配置路由地址配置如下  断言Route Predicate Factories  官网地址点击跳转  通过断言判断请求是否路由到微服务。  获取当前时区时间  在讲解之前我们需要先知道如何获取默认时区时间  public static void main(String[] args) {ZonedDateTime zbj ZonedDateTime.now(); // 默认时区System.out.println(zbj); }After Route   官网描述如下 表示只有在当前时间之后该路由才会被匹配。 例 yml配置格式 我配置的时间是大于当前时间的但我们必须要在该时间后才能访问到 spring:   cloud:     gateway:       routes:         - id: route1           uri: http://localhost:8081           predicates:             - Path/api/**             - After2024-12-26T17:31:14.52383870008:00[Asia/Shanghai] 访问结果如下  BeforeBetween 同理 Cookie Route  官方描述如下 通过键值对的方式配置Cookie访问时必须带上Cookie否则访问不到服务。 Header Route  请求头要有X-Request-Id属性并且值为整数的正则表达式 其他的断言用到了请查阅官方文档写得很详细 自定义断言 Component public class MyRoutePredicateFactory extends AbstractRoutePredicateFactoryMyRoutePredicateFactory.Config {public MyRoutePredicateFactory(){super(MyRoutePredicateFactory.Config.class);}Validatedpublic static class Config{SetterGetterNotEmptyprivate String userType; //钻、金、银等用户等级}Overridepublic PredicateServerWebExchange apply(MyRoutePredicateFactory.Config config){return new PredicateServerWebExchange(){Overridepublic boolean test(ServerWebExchange serverWebExchange){//检查request的参数里面userType是否为指定的值符合配置就通过String userType serverWebExchange.getRequest().getQueryParams().getFirst(userType);if (userType null) return false;//如果说参数存在就和config的数据进行比较if(userType.equals(config.getUserType())) {return true;}return false;}};}//开启shortcut支持Overridepublic ListString shortcutFieldOrder() {return Collections.singletonList(userType);} } YML配置 必须加上usertypediamond才能访问的服务 Filter过滤器 官方文档点击跳转  1. Filter的作用 Filters 通常用于以下几种场景 请求预处理对请求进行检查、修改、验证或转换如请求数据格式化、认证、限流、日志记录等。响应后处理在响应数据返回客户端之前进行处理如数据加密、响应格式化、缓存处理等。路由转发基于请求中的一些特定信息如URL路径、请求头、请求参数等决定如何路由请求。 2. Filter的分类 在不同的网关架构中Filter的分类有所不同。以 Spring Cloud Gateway 和 API Gateway 为例它们通常将 Filter 分为以下几种类型 1. Pre Filter前置过滤器 前置过滤器在请求到达服务之前执行。它们可以用来进行 身份验证如检查JWT令牌是否合法。日志记录记录请求的信息。限流检查请求是否超过某些限制。 2. Post Filter后置过滤器 后置过滤器在服务响应后客户端接收到响应之前执行。它们可以用来 修改响应比如修改响应体或响应头。性能监控计算请求处理时间进行性能分析。缓存处理根据某些条件返回缓存的响应。 3. Error Filter错误过滤器 错误过滤器用于处理请求过程中发生的错误。例如 统一错误处理当发生异常时返回特定的错误响应。日志记录记录错误信息以便后续分析。 例 请求头AddRequestHeader  是 Spring Cloud Gateway 中的一个 GatewayFilter 工厂用于在请求转发之前向请求中添加自定义的 HTTP 请求头。  向服务端新增方法 GetMapping(value /pay/gateway/filter)public ResultDataString getGatewayFilter(HttpServletRequest request){String result ;EnumerationString headers request.getHeaderNames();while(headers.hasMoreElements()){String headName headers.nextElement();String headValue request.getHeader(headName);System.out.println(请求头名: headName \t\t\t请求头值: headValue);if(headName.equalsIgnoreCase(X-Request-atguigu1)|| headName.equalsIgnoreCase(X-Request-atguigu2)) {result resultheadName \t headValue ;}}return ResultData.success(getGatewayFilter 过滤器 test result \t DateUtil.now());} yml配置 - id: pay_routh3 #pay_routh3uri: lb://cloud-payment-service #匹配后提供服务的路由地址predicates:- Path/pay/gateway/filter/** # 断言路径相匹配的进行路由filters:- AddRequestHeaderX-Request-atguigu1,atguiguValue1 # 请求头kv若一头含有多参则重写一行设置- AddRequestHeaderX-Request-atguigu2,atguiguValue2运行结果 请求参数 RemoveRequestParameter和AddRequestParameter 打印输入的参数  System.out.println();String customerId request.getParameter(customerId);System.out.println(request Parameter customerId: customerId);String customerName request.getParameter(customerName);System.out.println(request Parameter customerName: customerName);System.out.println(); yml添加 - AddRequestParametercustomerId,9527001 # 新增请求参数Parameterk v - RemoveRequestParametercustomerName # 删除url请求参数customerName你传递过来也是null测试请求的路径; http://localhost:9527/pay/gateway/filter?customerId9999customerNamez3 打印结果 可以发现添加到参数会覆盖原有的值移除的参数就算是传值也会被置为null 请求回应ResponseHeader 修改之前的响应头 配置yml - AddResponseHeaderX-Response-atguigu, BlueResponse # 新增请求参数X-Response-atguigu并设值为BlueResponse - SetResponseHeaderDate,2099-11-11 # 设置回应头Date值为2099-11-11 - RemoveResponseHeaderContent-Type # 将默认自带Content-Type回应属性删除 修改后响应头  前缀和路径相关组  The PrefixPath GatewayFilter Factory The SetPath GatewayFilter Factory The RedirectTo GatewayFilter Factory  全局过滤器:  官方文档点击跳转 新建global类  package com.atguigu.cloud.mygateway;import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono;import java.util.Map;Component Slf4j public class MyGlobalFilter implements GlobalFilter, Ordered {public final static String BEGIN_VISIT_TIME beginVisitTime;Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {//记录访问接口开始时间exchange.getAttributes().put(BEGIN_VISIT_TIME, System.currentTimeMillis());//返回统计的各个结果给后台return chain.filter(exchange).then(Mono.fromRunnable(()-{Long beginVisitTime exchange.getAttribute(BEGIN_VISIT_TIME);if(beginVisitTime ! null){log.info(访问接口主机exchange.getRequest().getURI().getHost());log.info(访问接口端口exchange.getRequest().getURI().getPort());log.info(访问接口URLexchange.getRequest().getURI().getPath());log.info(访问接口URL后面的参数exchange.getRequest().getURI().getRawQuery());log.info(访问接口时长(System.currentTimeMillis()-beginVisitTime)毫秒);log.info(分割线);System.out.println();}}));}Overridepublic int getOrder() {return 0;} }yml 测试结果 自定义条件Filter  过滤条件是 必须带有 ’yuanshen‘的请求参数  package com.atguigu.cloud.mygateway;import lombok.Getter; import lombok.Setter; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.cloud.gateway.filter.factory.SetPathGatewayFilterFactory; import org.springframework.http.HttpStatus; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; 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(进入了自定义网关过滤器MyGatewayFilterFactorystatusconfig.getStatus());if(request.getQueryParams().containsKey(atguigu)){return chain.filter(exchange);}else{exchange.getResponse().setStatusCode(HttpStatus.BAD_REQUEST);return exchange.getResponse().setComplete();}}};}Overridepublic ListString shortcutFieldOrder() {return Arrays.asList(status);}public static class Config{GetterSetterprivate String status;//设定一个状态值/标志位它等于多少匹配和才可以访问} } //单一内置过滤器GatewayFilter yml 补充  对应关系
http://www.hkea.cn/news/14576293/

相关文章:

  • 网站推广营销深圳宝安快餐服务200便宜
  • 多个域名解析到一个网站设计ui
  • 做电销哪些网站可以找到客户端长丰下塘新农村建设网站
  • 海口建设企业网站中国农村建设投资有限公司网站
  • 成都高端网页设计公司seo公司发展前景
  • 公司建设网站的通知书湖北住房和城乡建设部网站
  • html5网站 源码机械技术支持 东莞网站建设
  • 熊掌号怎么做网站跳转链接苏州做网站公司电话
  • 手机建站最好的网站网站建设运营
  • 北京门户网站设计网站建设搭建
  • 西红门网站建设效果好的魔站建站系统
  • 网站开发加维护需要多少钱如何能让企业做网站的打算
  • 大气网站背景台州永建建设有限公司网站
  • wordpress 还原备份成都网站优化报价
  • 兰州手机网站河田镇建设局网站
  • 网站建设方面的书小工程承包网
  • 专门做dm单的网站网站建设哪些字体没有版权
  • gg服务器租用网站关键词查询爱站网
  • 南京网站开发选南京乐识赞辣条网站建设书
  • win7iis配置网站成都行业网站建设
  • 自己做的网站网站搜索wordpress投稿者查看评论
  • 网站打开速度慢跟什么有关系Wordpress的未来
  • 免费h5旅游网站模板静海做网站公司
  • 哈尔滨网站建设报价价格深圳全网推广营销怎么做
  • 查看网站开发语言方法上海免费网站建站模板
  • 网站搭建中114514网站建设工作会议
  • 潍坊网站的公司电话用来做微网站的
  • 东莞网站建设求职简历建设网站关键词怎么写
  • 做网站用什么编程语言好网站的注册和登录界面怎么做
  • mysql 网站开发 问好工业设计公司发展方向