文章目录
- 创建网关
- 配置路由规则
- 工作原理
- 断言
- 过滤器
- 默认filter
- 全局跨域

左边的是响应式网关,右边是传统网关(Servlet年代)
推荐左边的

需求

创建网关
在服务模块外
新建一个gateway模块
导入依赖,nacos和gateway和负载均衡
配置一下
这里网关默认占8080端口,我们改称80端口,你输入url时候
如果只写localhsot没写端口默认走80
所以以后写url只写localhost/api/order和localhost:80/api/order效果一样
网关本身算一个服务在nacos中所以要开启服务发现注解
接下来启动项目它就是一个网关了
配置路由规则
两种方式,一种配置文件方式,一种编码方式
配置方式
在我们的服务模块也要加上断言的前缀(因为gateway根据前缀转发对应服务对应http请求不变还是api/order开头,你如果不加的话,服务就会找不到对应请求的url )
工作原理
id唯一标识
满足断言规则才会到uri指定目的地
断言
断言匹配顺序默认从上到下依次匹配
如果有order,则order越小越先匹配,比如这里你输api/order/**就会到我们的service-order
但是如果没有order的话,会到我们的https://cn.bing.com/
这里建议找一下官方文档看一下
断言可以限制的有很多,比如限制参数,Cookie,路径等等
分为长短写法
还有一个自定义断言工厂
过滤器
路径重写过滤器常用
后面用的是正则表达式
可使用ai辅助
下面这个过滤器会给所以请求添加请求头
X-Response-Abc = 123
默认filter
这默认filiter就会在每一个路由规则都会应用
GlobalFilter和自定义过滤器工厂自己学一下
全局跨域
前后端端口不一样跨域
在网关设置跨域解决
一般都是配置这个允许全局跨域