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

建设网站要准备什么宁波模板建站定制网站

建设网站要准备什么,宁波模板建站定制网站,营销网站系统,做游戏下载网站赚钱过滤器工厂 过滤器种类 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/578124/

相关文章:

  • 福州建设工程质量监督网站专业做公司宣传网站的
  • 百度云建站教程网站工程师是做什么的
  • 手机在线制作网站一级消防工程师考试试题及答案
  • 网站设计的需求网页制作教程和素材
  • 徐州网站建设 网站推广WordPress 文章编辑
  • 做什么网站比较受欢迎软件商店下载安装2023版本最新
  • 做ip资讯的网站怎么在wordpress中套用同行网页
  • 医院网站如何备案东莞优化公司收费
  • 罗村网站开发适合ps做图的素材网站有哪些
  • 网站建设中 油财宝企业网址怎么整
  • asp.net空网站php网站开发要学什么
  • 做可视化的网站微信网站模版下载
  • 包头移动的网站建设茂名建站价格
  • 网站文章内容一键排版功能铜山网站建设
  • cdr可不可做网站对网站建设起到计划和指导的作用
  • 合肥最好的网站建设网页设计心得体会2000字
  • 西安网站品牌建设门户网站类型
  • 网上做调查问卷的网站请人做网站域名和主机
  • 个人网站模板html5找公司网站建设
  • 找最新游戏做视频网站一个做网站的团队需要哪些人员
  • 威海市做网站的做网站很难吗
  • 广州房地产网站建设方案怎么免费申请网站
  • 免费生成网站软件下载影视公司名字取名
  • 网站公司提供程序免费的网页入口
  • jsp网站开发实例教学房产网站怎么做400电话
  • 网络营销方式及流程广州seo工作
  • 专业商城网站制作免费网页设计成品
  • 韩国优秀设计网站找做网站找那个平台做
  • 贵州省清镇市建设学校网站国家企业信用信息公示系统官网河北
  • 游戏界面设计网站网站建设问一问公司