谷粒商城-全栈-15 分布式组件-SpringCloud-Gateway 网关创建及测试
一、Gateway网关概念
网关作为流量的入口,常用功能包括路由转发、权限校验限流控制等。而 Springcloud gateway作为 SpringCloud官方推出的第二代网关框架,取代了 Zuul 网关。
特点:
- 路由(Route):路由网关的基本构建块。它由ID,目标URI,断言集合和过滤器集合定义。如果断言为true,则匹配路由。
- 断言(Predicate):这是Java 8 断言函数。输入类型是Spring Framework ServerWebExchange。这使开发人员可以匹配HTTP请求中的所有内容,例如标头或参数。
- 过滤器(Filter): 发送下游请求之前或之后,可以修改请求和响应。
工作过程:
客户端向Spring Cloud Gateway发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序。该处理程序运行通过特定于请求的筛选器链发送请求。筛选器由虚线分隔的原因是,筛选器可以在发送代理请求之前或之后执行逻辑。执行所有“前置”过滤器逻辑,然后发出代理请求。发出代理请求后,将执行“后”过滤器逻辑。
二、GateWay创建
右键File->Module->使用 Spring Intitializr 创建模块
- Project Metadata
- Group: com.atguigu.gulimall
- Artifact: gulimall-gateway
- Package: com.atguigu.gulimall.gateway
- Dependencies添加依赖
- Spring Cloud Routing-Gateway
修改gulimall-gateway\pom.xml
添加依赖
<dependency>
<groupId>com.atguigu.gulimall</groupId>
<artifactId>gulimall-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
启用GulimallGatewayApplication.java
/**
* 1、启动注册自动发现
* 2、排除数据源自动配置(因为网关服务不需要用到数据库方便的功能,如果不排除启动会报错)
*/
@EnableDiscoveryClient
// 排除数据源自动配置
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class GulimallGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallGatewayApplication.class, args);
}
}
创建gulimall-gateway\src\main\resources\bootstrap.properties
spring.application.name=gulimall-gateway
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=547e4766-5a3a-41ac-bf98-b52a4c092718
在nacos创建命名空间gateway,创建Data-ID:gulimall-gateway.properties
spring.application.name=gulimall-gateway
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
server.port=8888
创建配置文件gulimall-gateway\src\main\resources\application.yml
spring:
cloud:
gateway:
routes:
- id: test_route
uri: https://www.baidu.com
predicates:
- Query=url,baidu
- id: qq_route
uri: https://www.qq.com
predicates:
- Query=url,qq
启动gulimall-gateway访问http://localhost:8888/hello?url=baidu,跳转至百度
启动gulimall-gateway访问http://localhost:8888/hello?url=qq,跳转至腾讯
至此,我们的网关已经配置OK了,然后将代码提交到码云上。
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)