个人名片:

博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。


本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 三、路由断言工厂
  • 四、路由过滤器
    • 1.案例:给所有进入userservice的请求添加一个请求头
    • 2.默认过滤器

三、路由断言工厂

Spring提供了11种基本的Predicate工厂:

名称 说明 示例
After 是某个时间点后的请求 - After=2037-01-20T17:42:47.789-07:00[America/Denver]
Before 是某个时间点之前的请求 - Before=2031-04-13T15:14:47.433+08:00[Asia/Shanghai]
Between 是某两个时间点之前的请求 - Between=2037-01-20T17:42:47.789-07:00[America/Denver], 2037-01-21T17:42:47.789-07:00[America/Denver]
Cookie 请求必须包含某些cookie - Cookie=chocolate, ch.p
Header 请求必须包含某些header - Header=X-Request-Id, \d+
Host 请求必须是访问某个host(域名) - Host=.somehost.org,.anotherhost.org
Method 请求方式必须是指定方式 - Method=GET,POST
Path 请求路径必须符合指定规则 - Path=/red/{segment},/blue/**
Query 请求参数必须包含指定参数 - Query=name, Jack或者- Query=name
RemoteAddr 请求者的ip必须是指定范围 - RemoteAddr=192.168.1.1/24
Weight 权重处理

在上面快速入门的学习中,我们只使用到了Path。
了解

  • lPath=/user/**是什么含义?

路径是以/user开头的就认为是符合的

  • lPredicateFactory的作用是什么?

读取用户定义的断言条件,对请求做出判断

四、路由过滤器

Spring提供了31种不同的路由过滤器工厂。例如:

名称 说明
AddRequestHeader 给当前请求添加一个请求头
RemoveRequestHeader 移除请求中的一个请求头
AddResponseHeader 给响应结果中添加一个响应头
RemoveResponseHeader 从响应结果中移除有一个响应头
RequestRateLimiter 限制请求的流量

1.案例:给所有进入userservice的请求添加一个请求头

1.添加过滤器配置(application.yml)
注意审题,发现需要在userservice下加入过滤器。

server:port: 10010 # 网关端口
spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes:- id: user-service # 路由ID,自定义,只要唯一即可# uri: http://127.0.0.1:8081 # 路由的目标地址 http 就是固定地址uri: lb://userservice # 路有目标 lb为开启负载均衡,userservice为服务名称predicates: # 路由断言,判断请求是否符合路由规则- Path=/user/** # 路由规则 以user开头即可filters: # 过滤器- AddRequestHeader=come on, The future is uncertain. We are both dark horses. # 添加请求头- id: order-serviceuri: lb://orderservicepredicates:- Path=/order/**

2.修改UserController
目的:使控制台可以查看到我们添加的请求头

@GetMapping("/{id}")
public User queryById(@PathVariable("id") Long id,@RequestHeader(value ="Truth", required = false) String truth) {log.info("Truth:{}", truth);return userService.queryById(id);
}

3.测试
访问路径:http://localhost:10010/user/1

2.默认过滤器

作用:①对所有路由都生效的过滤器

server:port: 10010 # 网关端口
spring:application:name: gateway # 服务名称cloud:nacos:server-addr: localhost:8848 # nacos地址gateway:routes:- id: user-service # 路由ID,自定义,只要唯一即可uri: lb://userservice # 路有目标 lb为开启负载均衡,userservice为服务名称predicates: # 路由断言,判断请求是否符合路由规则- Path=/user/** # 路由规则 以user开头即可- id: order-serviceuri: lb://orderservicepredicates:- Path=/order/**default-filters:- AddRequestHeader=Truth,Itcast is freaking awesome! # 添加请求头

对比
filters在routes下一级
默认过滤器(default-filters)与routes同级

SpringCloud——网关2相关推荐

  1. SpringCloud 网关 Gateway

    哈喽~大家好,这篇来看看SpringCloud 网关 Gateway.

  2. SpringCloud:网关getway 路由转发

    Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等技术开 ...

  3. springCloud网关

    一.Spring Cloud Gateway Spring Cloud Gateway是Spring官方基于Spring5.0.SpringBoot2.0和Project Reactor等技术开发的网 ...

  4. springcloud 网关_Spring Cloud 系列之 Netflix Zuul 服务网关(二)

    本篇文章为系列文章,未读第一集的同学请猛戳这里: 哈喽沃德先生:Spring Cloud 系列之 Netflix Zuul 服务网关(一)​zhuanlan.zhihu.com 本篇文章讲解 Zuul ...

  5. Docker部署微服务时Springcloud网关报错 java.net.UnknownHostException: xxx: Name or service not known

    文章目录 一.问题 二.原因 三.解决办法 一.问题 eureka.gateway 和 微服务应用 部署好后用网关访问应用时报错 java.net.UnknownHostException: 235e ...

  6. springcloud网关的作用

    网关就是为微服务群提供一个统一的入口

  7. 【学习】024 springCloud

    单点系统架构 传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子 ...

  8. 微服务_服务网关(Gateway)

    目录 一.为什么需要网关 二.SpringCloud网关的实现方式 三.Gateway实践 1)创建gateway服务,引入依赖 2)编写启动类 3)编写基础配置和路由规则 4)重启测试 5)网关路由 ...

  9. 小D课堂 - 新版本微服务springcloud+Docker教程_汇总

    小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...

最新文章

  1. windows7 64位机上CUDA7.0配置及在VS2010中的简单使用举例
  2. CCF NOI1014 写评语
  3. DBA日常工作内容和职责
  4. CETK测试原理/测试方法/测试结果分析以及常见WinCE Test Kit运行问题的排查
  5. 快来参加学习.NET 挑战赛
  6. [蓝桥杯2015初赛]手链样式-思维+next_permutation枚举(好题)
  7. python 坐标轴 单位刻度_Python学习笔记(matplotlib篇)--坐标轴刻度
  8. 【转】无刷新验证用户名可用性
  9. java连接navicat_如何使用Navicat连接Oracle
  10. 基于jquery的带事件显示功能的日历板插件calendar.js
  11. 网游中的网络编程3:在UDP上建立虚拟连接
  12. centos 8 配置yum源并安装开发工具包
  13. Mysql全文索引解析
  14. python之Scrapy 的Xpath常用定位相关
  15. 对信息断舍离进行时——一段自我反省
  16. JS复习笔记之造new轮子
  17. Lua实现简单的任务动画移动(Animator)
  18. Springboot健康饮食小程序的设计的实现毕业设计源码280920
  19. folly::ConcurrentSkipList 详解
  20. 加减法叫做什么运算_加减法四则运算的计算方法是什么

热门文章

  1. Android基于安卓手机个人理财系统
  2. ThinkpadT420加装上网卡
  3. Excel如何在当前行的下方插入新行?
  4. Qt widget事件传递顺序以及监听特定控件是否接收某个事件
  5. 嵌入式系统课堂小结5
  6. 【滤镜算法】低多边形风格介绍及Matlab实现
  7. java字符串同构_Java同构代码
  8. Hadoop MR 分区(partition)和全排序(WritableComparable)
  9. 5G的SUCI、SUPI、5G-GUTI使用场景及关系
  10. vue+draggable +jsPlumb 表格数据连线