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

微服务——统一网关Getway

为什么需要网关?

 网关的两种实现:

 网关Getway——快速入门

步骤一

网关背身也是一个微服务,需要注册到nacos中去

 步骤二 

成功运行后

可以通过网关进行请求转发到对应服务。

 

 流程如下:

 路由断言工厂

网关路由可以配置的东西有如下。

 

 spring中的11中基本的Predicate工厂 

 路由过滤器GatewayFilter

 

 案例:

 在userserver中获取到请求头的要用一个@RequestHeader注解,required = false表示可传可不传

    /*** 路径: /user/110** @param id 用户id* @return 用户*/@GetMapping("/{id}")public User queryById(@PathVariable("id") Long id,@RequestHeader(value = "Truth",required = false) String truth) {System.out.println(truth);return userService.queryById(id);}

 全局过滤器GlobalFilter

案例2:

 这里可以由两种方式设定过滤器顺序,注解和接口。

@Component
//@Order(-1) //过滤器的优先级,越小越高
public class AuthorizeFilter implements GlobalFilter , Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {//1.获取请求参数ServerHttpRequest request = exchange.getRequest();MultiValueMap<String, String> queryParams = request.getQueryParams();//2.获取参数中的authorization参数String authorization = queryParams.getFirst("authorization");//3.判断参数值是否等于adminif("admin".equals(authorization)) {//4.是,放行return chain.filter(exchange);}//5.否,拦截//5.1设置状态码exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}@Overridepublic int getOrder() {return -1;}
}

 运行结果符合预期所示

 

过滤器执行顺序 

 

 

 网关的cors跨域配置

 

options请求就是CORS的询问请求。 

http://www.lryc.cn/news/97266.html

相关文章:

  • [ELK安装篇]:基于Docker虚拟容器化(主要LogStash)
  • 纪录片《打铁文艺社》:从全美高中生电影节到多项国际赞誉,聚焦城市公共艺术的蜕变之路
  • VLAN---虚拟局域网
  • 新的CoolSiC™槽沟MOSFET技术,用于低栅氧化物应力和高性能
  • 【开源项目】低代码数据可视化开发平台-Datav
  • 【自动话化运维】Ansible常见模块的运用
  • 深入理解C语言中的字符指针初始化与用法
  • es添加索引命令行和浏览器添加索引--图文详解
  • Java 大数字运算之 BigDecimal 类
  • MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点1:二进制日志文件(Binary log)
  • MY.CNF
  • SpringBoot IOC与AOP(一)
  • JVM运行时数据区——方法区的垃圾回收
  • LeetCode213.House-Robber-II<打家劫舍II>
  • 订单系统问题汇总
  • springboot热加载spring-boot-devtools:
  • QT学习之旅 - 一个QT的基本项目
  • 大数据课程D2——hadoop的概述
  • 使用nginx和ffmpeg搭建HTTP FLV流媒体服务器(摄像头RTSP视频流->RTMP->http-flv)
  • 揭秘APT团体常用的秘密武器——AsyncRAT
  • Flutter Widget Life Cycle 组件生命周期
  • LeetCode面向运气之Javascript—第2600题-K件物品的最大和-94.68%
  • 数学建模学习(4):TOPSIS 综合评价模型及编程实战
  • PHP之Smarty使用以及框架display和assign原理
  • 《TCP IP网络编程》第十一章
  • Folx Pro 5 最好用的Mac磁力链接BT种子下载工具
  • Redis 数据库的高可用
  • elementPlus dialog组件设置可拖动,当内容高度大于视口高度拖动显示异常的解决办法
  • 亲测解决Git inflate: data stream error (incorrect data check)
  • Ansible 自动化运维工具