前言,之前写的微服务中,并没有网关来进行控制,任何请求都可以访问到服务,所以,我们通过集成网关的方式,来对发送到我们服务的路由进行管理和控制。
第一步,创建一个springboot应用
第二步,引入相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
第三步,配置文件
server:
port: 10010
spring:
application:
name: gateway
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8850
username: nacos
password: nacos
# clusterName: SH #集群名称
namespace: 09692bbe-ed77-4c45-8a5e-b2508ba663a8 #namespace id
gateway:
routes:
- id: user-service #路由标识,唯一标识一个路由地址
uri: lb://userservice #路由地址,lb代表负载均衡,后面加服务名称
predicates: #路由断言,判定哪些请求要通过网关来进行路由
- Path=/user/**
- id: order-service
uri: lb://orderservice
predicates:
- Path=/order/**
启动测试:
网关解决浏览器跨域问题,通过配置解决:
globalcors:
add-to-simple-url-handler-mapping: true
cors-configurations:
'[/**]':
#是否允许cookie跨域 true允许
allowCredentials: true
#允许跨域的url * 则允许全部
allowedOrigins:
- http://192.168.184.2
# 允许跨域的方法 * 则全部
allowedMethods:
- GET
- POST
- DELETE
# 跨域预检时间
maxAge: 3600
自定义全局的filter:
编写一个filter实现GlobalFilter接口。在filter方法中编写你需要的过滤条件。