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

沧州什么地方可以学建网站国家住房与城乡建设部网站

沧州什么地方可以学建网站,国家住房与城乡建设部网站,有创意的汽车广告,网站上传源码后怎么弄前言 Filter#xff0c;又名过滤器#xff0c;当然不是我们日常中见到的#xff0c;诸如此类构件#xff1a; 而应该是微服务中常使用的#xff0c;诸如此类#xff08;图片来自官网#xff0c;点击可查看原图#xff09;#xff1a; 一般用于字符编码转换#xf…前言 Filter又名过滤器当然不是我们日常中见到的诸如此类构件 而应该是微服务中常使用的诸如此类图片来自官网点击可查看原图 一般用于字符编码转换日志处理等场景。而我们今天提到的Filter是基于springcloud gateway而言的。 一、Gateway Filter 1. 按生命周期划分 通过springcloud gateway的工作原理图我们可以发现过滤器在数据的请求和返回的过程中发挥它应有的作用。此类过滤器生命周期有两类 过滤器阶段过滤器作用Pre-req业务逻辑请求前(pre-request)完成相关操作Post-req业务逻辑请求后(post-request)完成相关操作 2. 按职责范围划分 过滤器名称过滤器简介GateWayFilter单一过滤器即仅可完成单一功能的Filter一般可建多个GlobalFilter全局过滤器可完成所有路由功能的Filter一般只建1个 其他内容可参考官网这里不再赘述。如需请速戳springcloud gateway。 当然不管是什么生命周期还是什么职责范围过滤器都会按照指定的路由执行否则那不乱成一锅粥了。 因此每个过滤器都应指定一个顺序Order值。 二、Gateway Filter Order 一句话总结Order值越小优先级越高执行越靠前。 以下是springcloud gateway filter中的order定义 public interface Ordered {/*** Useful constant for the highest precedence value.* see java.lang.Integer#MIN_VALUE*/int HIGHEST_PRECEDENCE Integer.MIN_VALUE;/*** Useful constant for the lowest precedence value.* see java.lang.Integer#MAX_VALUE*/int LOWEST_PRECEDENCE Integer.MAX_VALUE;/*** Get the order value of this object.* pHigher values are interpreted as lower priority. As a consequence,* the object with the lowest value has the highest priority (somewhat* analogous to Servlet {code load-on-startup} values).* pSame order values will result in arbitrary sort positions for the* affected objects.* return the order value* see #HIGHEST_PRECEDENCE* see #LOWEST_PRECEDENCE*/int getOrder();} 而我们在使用的过程中一般这样定义顺序 Component public class TestGlobalFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {return chain.filter(exchange);}Overridepublic int getOrder() {return 123;} }三、问题案例 因为我们在项目开发过程中 为完成某些特定功能会经常使用过滤器所以难免遇到一些问题。而今天博主重点介绍其中的一个问题请求体丢失即只能消费一次的问题。 废话无需多言直接参考以下代码即可满足你的需要 1. 缓存requestbody import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.Ordered; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBufferUtils; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpRequestDecorator; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono;/*** 定义一个全局过滤器实现requestbody缓存* date 2024/01/07 09:06*/ Component public class ReqGlobalFilter implements Ordered, GlobalFilter {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {if (exchange.getRequest().getHeaders().getContentType() null) {return chain.filter(exchange);} else {return DataBufferUtils.join(exchange.getRequest().getBody()).flatMap(dataBuffer - {DataBufferUtils.retain(dataBuffer);FluxDataBuffer cachedFlux Flux.defer(() - Flux.just(dataBuffer.slice(0, dataBuffer.readableByteCount())));ServerHttpRequest mutatedRequest new ServerHttpRequestDecorator(exchange.getRequest()) {Overridepublic FluxDataBuffer getBody() {return cachedFlux;}};return chain.filter(exchange.mutate().request(mutatedRequest).build());});}}Overridepublic int getOrder() {return -10000;//也可设置为最高优先级} } 2. 获取requestbody 在其他过滤器中引用以下代码实现requestbody获取 private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest){// 获取请求体FluxDataBuffer body serverHttpRequest.getBody();AtomicReferenceString bodyRef new AtomicReference();body.subscribe(buffer - {CharBuffer charBuffer StandardCharsets.UTF_8.decode(buffer.asByteBuffer());DataBufferUtils.release(buffer);bodyRef.set(charBuffer.toString());});return bodyRef.get();}结语 Filter是完成业务逻辑前或后应有操作的必要环节也是实现统一服务的典型武器所以我们应该了解它、学习它、掌握它。 好了今日话题到此为止下一篇是啥继续期待 历史回顾 微服务实战系列之API加密 微服务实战系列之Dubbo下 微服务实战系列之Dubbo上 微服务实战系列之ZooKeeper实践篇 微服务实战系列之ZooKeeper下 微服务实战系列之ZooKeeper中 微服务实战系列之ZooKeeper上 微服务实战系列之MQ 微服务实战系列之通信 微服务实战系列之J2Cache 微服务实战系列之Cache技巧篇 微服务实战系列之MemCache 微服务实战系列之EhCache 微服务实战系列之Redis 微服务实战系列之Cache 微服务实战系列之Nginx技巧篇 微服务实战系列之Nginx 微服务实战系列之Feign 微服务实战系列之Sentinel 微服务实战系列之Token 微服务实战系列之Nacos 微服务实战系列之Gateway 微服务实战系列之加密RSA 微服务实战系列之签名Sign
http://www.w-s-a.com/news/734525/

相关文章:

  • 东莞食品网站建设扬州市住房建设局网站
  • 网站色彩心理建设网站的主要功能有哪些
  • 营销型网站建设运营企业宣传网页设计
  • 建设银行官方网站网址sem搜索
  • 简述建设网站的具体步骤网络建设方案ppt
  • 自建门户网站建设工程质量监理协会网站
  • 为企网站版面设计经历了哪几个阶段
  • 如何直到网站是用什么模板做的怎么在外贸公司拿订单
  • 网站专题制作酒店网站建设考虑的因素
  • 苏州招聘网站建设潍坊网站建设wfxtseo
  • 手机网站特效做互联网平台要多少钱
  • 做网站广告推广平台旅游网站后台管理系统
  • ppt模板下载免费素材网站php网站开发平台下载
  • 网站推广策划报告航空航天可以做游戏可以视频约会的网站
  • 云南建设学院的网站划分切片来做网站
  • 建设视频网站需要什么知识辽阳建设网站
  • 提供o2o网站建设打扑克网站推广软件
  • 制作简单门户网站步骤中国建设局网站查询
  • 漳州专业网站建设网站建设的面试要求
  • 有哪些网站是封面型汕头网站上排名
  • 自动优化网站软件没有了做的新网站做百度推广怎么弄
  • 高陵县建设局网站商标查询网站
  • 郑州建设网站哪家好东莞网络公司排行榜
  • 成都网站开发费用做行程的网站
  • 做地铁建设的公司网站手机网站首页布局设计
  • 福建亨立建设集团有限公司网站搜狗网页游戏大厅
  • 设计网站musil访问量大的网站选择多少流量的服务器何时
  • 公司网站包括哪些内容新网站怎样做外链
  • 淘宝宝贝链接怎么做相关网站广州好蜘蛛网站建设
  • 长春网站制作网页博山区住房和城乡建设局网站