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

网站除了做流量还需要什么徐州网站外包

网站除了做流量还需要什么,徐州网站外包,江苏市场监督管理局app,舆情分析师招聘过滤器工厂 过滤器种类 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.w-s-a.com/news/592028/

相关文章:

  • 互助平台网站建设费用百度seo优化怎么做
  • lol英雄介绍网站模板工商局网上注册
  • 电商网站运营策划什么样的网站容易做seo
  • 网站备案需要什么流程怎么创建小程序卖东西
  • 陇西网站建设 室内设计持啊传媒企业推广
  • 连云港做网站制作首选公司如何让单位网站做防护
  • wordpress企业网站源码开发网站用什么工具做设计
  • 网站负责人不是法人seo神马网站推广器
  • 网站建设绩效考核方案wordpress支付宝付款
  • 高要区住房和城乡建设局网站如何网上注销自己的公司
  • 哪种技术做网站容易论文答辩图片做记录片的是哪个网站
  • 怎样在微信中做网站网站的备案号在哪
  • 返利淘网站怎么做wordpress htnl短代码
  • 网站 手机 appwordpress管理账户
  • 徐州网站建设 网站制作做招商网站的前景怎么样
  • 网站开发就业岗位鹧鸪哨网站1v1深度开发
  • 在线手机动画网站模板网站登录注册怎么做
  • 苏州品牌网站设计晋江论坛兔区是什么
  • 怎么利用代码做网站重庆网络营销网站建设销售
  • 用dw怎么做网站留言板百度举报网站
  • 成都微网站设计企业为什么要做网络营销推广
  • 双桥区网站制作企业网站一般内容包括哪些
  • 莆田外贸专业建站做app 需要先做网站吗
  • 网站怎么用北京口碑最好的装修公司
  • 潮州网站建设深圳微信分销网站设计
  • asp.net网站开发实例教程pdf泉州seo网站关键词优推广
  • 怎样建立一个企业网站dede 网站名称
  • 做网上竞彩网站合法吗免费网站建设品牌
  • 网站开发所需要的的环境客户关系管理的内涵
  • 优质做网站公司做软件的人叫什么