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

网站的维护和推广江阴网站网站建设

网站的维护和推广,江阴网站网站建设,wordpress返回顶部,做本地网站应该选什么内容过滤器工厂 过滤器种类 GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务响应的结果做加工处理 Spring提供了31中不同的路由过滤器工厂 AddResponseHeader表示给请求添加响应头 default-filters: # 默认过滤器 - AddResponseHeaderX-Response-Default-R…过滤器工厂 过滤器种类 GatewayFilter是网关中提供的一种过滤器,可以对进入网关的请求和微服务响应的结果做加工处理 Spring提供了31中不同的路由过滤器工厂 AddResponseHeader表示给请求添加响应头 default-filters: # 默认过滤器 - AddResponseHeaderX-Response-Default-Red, Default-Blue # 添加响应头X-Response-Default-Red: Default-BluePrefixPath表示给请求添加路径前缀 default-filters: # 默认过滤器 - PrefixPath/httpbinAddRequestHeader表示给请求添加key为X-Request-red,value为blue的请求头,可以应用于流量染色 filters: # 服务过滤器 - AddRequestHeaderX-Request-red, blue # 添加请求头X-Request-red: blueAddRequestHeadersIfNotPresent表示给请求添加请求头,但只有当请求头里没有对应的请求头时才会添加,如果有则会传递原始的请求头 filters:# 添加多个请求头X-Request-Color-1:blue,X-Request-Color-2:green - AddRequestHeadersIfNotPresentX-Request-Color-1:blue,X-Request-Color-2:green AddRequestParameter表示给请求添加请求参数 filters: - AddRequestParameterred, blue # 添加请求参数redblueAddResponseHeader表示给请求添加响应头 filters: - AddResponseHeaderX-Response-Red, Blue # 给请求添加响应头X-Response-Red: BlueCircuitBreaker(断路器)用于给接口做降级,当接口报错时降级去请求另一个接口 在使用断路器之前,需要先引入spring-cloud-starter-circuitbreaker-reactor-resilience4j依赖 spring:cloud:gateway:routes:- id: circuitbreaker_routeuri: lb://backing-service:8088predicates:- Path/consumingServiceEndpointfilters:- name: CircuitBreakerargs:name: myCircuitBreakerfallbackUri: forward:/inCaseOfFailureUseThis- RewritePath/consumingServiceEndpoint, /backingServiceEndpointRequestRateLimiter表示使用Redis做限流,使用的令牌桶算法如漏桶算法RedisLimitHandler filters: - name: RequestRateLimiterargs:redis-rate-limiter.replenishRate: 10redis-rate-limiter.burstCapacity: 20redis-rate-limiter.requestedTokens: 1RedirectTo根据请求头里包含的状态码重定向到某个地址 spring:cloud:gateway:routes:- id: prefixpath_routeuri: https://example.orgfilters:- RedirectTo302, https://acme.org # 当请求头里包含302的状态码时重定向到该地址RemoveRequestHeader表示删除请求中对应的请求头 filters: - RemoveRequestHeaderX-Request-FooRemoveRequestParameter表示删除请求中对应的请求参数 filters: - RemoveRequestParameterredRemoveResponseHeader表示删除响应中对应的响应头 filters: - RemoveResponseHeaderX-Response-FooRequestHeaderSize表示限制请求的请求头大小 filters: - RequestHeaderSize1000B # 如果请求头超过1000B,则会发送431状态码网关三大过滤器 路由过滤器 需求: 给所有进入userservice服务的请求都添加一个请求头如TruthHello World!,当前过滤器写在userservice服务下因此仅对当前路由的请求生效 server:port: 10010 # 网关端口 spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:80 # nacos地址gateway:routes: # 网关路由配置- id: user-serviceuri: lb://userservice # 配置userservice服务的路由规则predicates:- Path/user/**filters:- AddRequestHeaderTruth,Hello World! # 添加请求头Truth,值是Hello World!在UserController中编写对应的控制器方法获取请求头信息,重启网关服务和userservice服务并访问http://localhost:10010/user/test GetMapping(/test) public void test(RequestHeader(Truth) String tmp) {System.out.println(tmp); }默认过滤器 默认过滤器: 如果希望过滤器的操作对所有的路由都生效,则可以将过滤器工厂写到spring.cloud.gateway.default-filters属性下 server:port: 10010 # 网关端口 spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:80 # nacos地址gateway:routes:- id: user-serviceuri: lb://userservicepredicates:- Path/user/**default-filters: # 默认过滤器,对所有的路由请求都生效- AddRequestHeaderTruth,Hello World!全局过滤器 全局过滤器和GatewayFilter一样都可以对进入网关的请求和微服务的响应做加工处理 GatewayFilter网关过滤器: 通过配置文件定义所以处理的逻辑是固定的且只有默认过滤器对所有路由请求生效GlobalFilter全局过滤器: 可以编写代码做自己的业务逻辑,如登录状态判断,权限校验,请求限流等,对所有的路由请求都生效 public interface GlobalFilter {/*** 处理当前请求有必要的话通过{link GatewayFilterChain}将请求交给下一个过滤器处理** param exchange 请求上下文里面可以获取Request、Response等信息* param chain 用来把请求委托给下一个过滤器 * return {code MonoVoid} 返回标示当前过滤器业务结束*/MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain); }需求: 定义全局过滤器拦截请求,判断请求参数中是否有authorization且参数值是否为admin, 如果同时满足则放行请求否则拦截 第一步: 在gateway模块下新建cn.itcast.gateway.filter包,然后编写AuthorizationFilter类实现GlobalFilter接口并重写其中的filter方法 Order(-1) Component public class AuthorizationFilter implements GlobalFilter {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1. 获取请求参数ServerHttpRequest request exchange.getRequest();MultiValueMapString, String params request.getQueryParams();// 2. 获取authorization参数的值String authorization params.getFirst(authorization);// 3. 校验if (admin.equals(authorization)) {// 4. 满足需求则放行return chain.filter(exchange);}// 拦截请求// 5.1 先设置状态码,这里的常量底层就是401(在restFul中401表示未登录)exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);// 5.2 拦截请求return exchange.getResponse().setComplete();} }第二步: 重启网关测试我们的全局过滤器是否生效,只有访问http://localhost:10010/user/1?authorizationadmin时可以看到正常数据 {id: 1,username: 柳岩,address: 湖南省衡阳市 }过滤器执行顺序 请求进入网关后会经过路由过滤器,DefaultFilter,GlobalFilter三类过滤器,它们本质都是GatewayFilter(GlobalFilter被封装在GatewayFilterAdapter中) 请求路由后会将当前路由过滤器,DefaultFilter,GlobalFilter合并到一个过滤器链集合中,在集合中根据order值对每个过滤器排序后依次按顺序执行 过滤器必须指定一个int类型的order值,order值越小优先级越高即执行顺序越靠前(默认值为int最大值2147483647) 路由过滤器和de默认过滤器的order值: 由Spring指定默认是按照声明顺序从1递增全局过滤器的order值: 通过实现Ordered接口实现getOrder()方法或者添加Order注解来指定order值 //Order(-1) Component public class AuthorizationFilter implements GlobalFilter, Ordered {Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1. 获取请求参数MultiValueMapString, String params exchange.getRequest().getQueryParams();// 2. 获取authorization参数String authorization params.getFirst(authorization);// 3. 校验if (admin.equals(authorization)) {// 4. 满足需求则放行return chain.filter(exchange);}// 5. 不满足需求设置状态码这里的常量底层就是401在restFul中401表示未登录exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);// 6. 结束处理return exchange.getResponse().setComplete();}Overridepublic int getOrder() {return -1;} }过滤器的order值相同: 按照defaultFilter routeFilter GlobalFilter的顺序执行 org.springframework.cloud.gateway.route.RouteDefinitionRouteLocator#getFilters()方法: 负责加载defaultFilters然后再加载某个路由过滤器最后合并org.springframework.cloud.gateway.handler.FilteringWebHandler#handle()方法: 负责加载全局过滤器最后与路由过滤器和默认过滤器合并 # 配置路由过滤器和默认过滤器 server:port: 10010 # 网关端口 spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:80 # nacos地址gateway:routes:- id: user-serviceuri: lb://userservicepredicates:- Path/user/**filters: # 路由过滤器默认是按照声明顺序从1递增- AddRequestHeaderTruth,Hello World! # order值为1- RemoveRequestHeaderX-Request-Foo # order值为2default-filters: # 默认过滤器- AddRequestHeaderTruth,Hello World! # order值为1- RemoveRequestHeaderX-Request-Foo # order值为2# 将自定义的全局过滤器的order也设定为1
http://www.sczhlp.com/news/153602/

相关文章:

  • 同城信息商家的网站开发wordpress文章列表加广告
  • 网站改版后的推广办法惠州市网站建设企业
  • 医疗网站平台建设方案个人 服务器 linux 建网站
  • 长沙网站优化收费网站建设费用计入固定资产
  • 不同性质网站网站转载代码
  • 云浮网站建设兼职网站html代码
  • 嘉兴网站开发公司电话音乐网站的设计与开发
  • 查看网站是否收录商务网站主页设计公司
  • 济南烨铭网站建设网站开发分为
  • 万业网网站建设审核oa办公软件手机版
  • 长沙网站制作收费明细新手入门网站建设书籍
  • 2025上海骨灰盒哪里买优质厂家权威推荐榜:匠心工艺与品质服务之选
  • 实用指南:华为 HCIA-Datacom 备考:VRP 通用路由平台原理-实操
  • Voice Agent Camp 结营!完整项目名单公布丨超音速计划 2025
  • 网站系统后台免费ppt模板下载免费版百度云
  • 汕头如何建设网站设计网站服务器租用多少钱一年合适
  • 太原网站建设鸣蝉公司asp.net 4.0网站开发
  • 呼叫中心网站建设智通东莞人才网
  • 旅游网站首页设计模板电商公司有哪些?
  • 建设网站那个公司好wordpress可选模式主题
  • 2025上海寿衣哪里买权威推荐:优质供货商与暖心服务之选
  • AI 真能胜任专业工程师的工作吗?
  • 容器中与内存相关的几个参数
  • 淘宝店铺可以做网站优化么设计自学网站哪个好
  • 温岭做网站农资网站建设
  • 临汾推广型网站开发软件ui
  • 江苏省职业建设注册管理中心网站为企业做网站电话开场白
  • 网站建设相关推荐WordPress同步自媒体
  • 网站开发与设计实训总结两千字高端品牌粉碎机
  • 网站域名解析到了空间 但空间未绑定此域名成都企业模版网站建设