1. 网关的路由转发功能
在前后端分离的项目中,网关服务可以将前端的相关请求转发到相应的后端微服务中。
2. 网关微服务的配置
首先需要创建一个网关微服务,并添加依赖。
<!-- 网关 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务注册--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-core</artifactId></dependency>
随后,需要在application.yml配置相关的参数。如下图,id表示微服务名称,uri表示目标服务的地址,uri后面的lb表示采用负载均衡的方式,predicates为路由条件,Predicate 接受⼀个输⼊参数,返回⼀个布尔值结果。
server:port: 80 # 服务端口spring:profiles:active: dev # 环境设置application:name: service-gateway # 服务名cloud:nacos:discovery:server-addr: localhost:8848 # nacos服务地址gateway:discovery:locator:enabled: true # gateway可以发现nacos中的微服务,并自动生成转发路由#路由转发配置routes:- id: service-coreuri: lb://service-corepredicates:- Path=/*/core/**- id: service-smsuri: lb://service-smspredicates:- Path=/*/sms/**- id: service-ossuri: lb://service-osspredicates:- Path=/*/oss/**
3 解决跨域问题
需要创建Config类来处理跨域问题。
@Configuration
public class CrossOriginConfig {@Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config = new CorsConfiguration();config.setAllowCredentials(true); // 是否允许携带cookieconfig.addAllowedOrigin("*"); // 可接受的域,是一个具体域名或者*(代表任意域名)config.addAllowedHeader("*"); // 允许携带的头config.addAllowedMethod("*"); // 允许访问的方式UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();source.registerCorsConfiguration("/**", config);return new CorsWebFilter(source);}
}