简介:在Spring Cloud中,网关的角色是非常重要的,它负责整个系统的入口流量,并且可以处理路由、过滤、协议转换等操作
目录
1、网关的技术实现
1.1 网关功能
1.2 网关的形式
2、网关实现步骤
2.1 添加相关依赖
2.2 创建此module的main()方法,用来启动此服务
3、路由过滤器
3.1 路由断言工厂
4.1 路由过滤工厂
4.2 全局过滤器
4.3 跨域问题处理
4、总结
1、网关的技术实现
1.1 网关功能
图 1.1-1 网关功能 |
---|
上图中展示的便是网关的作用:
|
1.2 网关的形式
图 1.2-1 网关的两种形式 |
---|
2、网关实现步骤
2.1 添加相关依赖
图 2.1-1 添加相关依赖 |
---|
上图中展示的是搭建网关的第一步:
|
2.2 创建此module的main()方法,用来启动此服务
图 2.2-1 创建此module的main()方法 |
---|
上图中展示的是在当前项目中创建一个 gateway 模块而且创建此模块的main()方法,用来启动此服务 |
3、路由过滤器
3.1 路由断言工厂
图 3.1-1 路由断言工厂 |
---|
|
4.1 路由过滤工厂
图 4.1-1 路由过滤工厂 |
---|
上图中展示的便是路由过滤工厂的常见过滤器 |
4.2 全局过滤器
package cn.itcast.gateway;import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.http.HttpStatus;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.util.MultiValueMap;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;/*** 全局过滤器*/
public class AuthorizeFilter implements GlobalFilter, Ordered {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {// 1.获取请求ServerHttpRequest request = exchange.getRequest();MultiValueMap<String, String> map = request.getQueryParams();// 2.获取authorization参数String authorizeFilter = map.getFirst("authorizeFilter");// 3.校验if ("admin".equals(authorizeFilter)){// 4.校验成功,放行Mono<Void> mono = chain.filter(exchange);return mono;}// 5.校验失败,结束处理exchange.getResponse().setStatusCode(HttpStatus.FORBIDDEN);return exchange.getResponse().setComplete();}// 设置全局过滤器的执行顺序,数字越小越先执行@Overridepublic int getOrder() {return -1;}
}
4.3 跨域问题处理
图 4.3-1 跨域问题处理 |
---|
上图展示的便是处理跨域问题的方法,即在网关微服务的配置文件中,添加如上对应配置(参数要根据开发情况做出调整) |