当前位置: 首页>后端>正文

网关:Gateway

网关:Gateway,第1张

(1)理论基础

Gateway定义

Spring Cloud Gateway是Spring官方基于Spring5.0、SpringBoot2.0和Project Reactor等技术开发的网关,旨在为微服务框架提供一种简单而有效的统一的API路由管理方式,统一访问接口。

Gateway作用

Spring Cloud Gateway作为Spring Cloud生态体系中的网关,目标是替代Netflix的Zuul,其不仅提供统 一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全、监控/埋点和限流等等。 它是基于Netty的响应式开发模式。

Gateway的组成

1路由(route):路由是网关最基础的部分,路由信息由一个ID,一个目的URL、一组断言工厂和一 组Filter组成。如果断言为真,则说明请求URL和配置的路由匹配。

2断言(Predicate):Java8中的断言函数,Spring Cloud Gateway中的断言函数输入类型是 Spring5.0框架中的ServerWebExchange。Spring Cloud Gateway中的断言函数允许开发者去定义匹配 来自http Request中的任何信息,比如请求头和参数等。

3?过滤器(Filter):一个标准的Spring WebFilter,Spring Cloud Gateway中的Filter分为两种类型: Gateway Filter和Global Filter。过滤器Filter可以对请求和响应进行处理。

(2)项目应用

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>

? ? ? ? ? ? <artifactId>spring-cloud-starter-gateway</artifactId>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>org.springframework.cloud</groupId>

? ? ? ? ? ? <artifactId>spring-cloud-loadbalancer</artifactId>

? ? ? ? </dependency>

? ? ? ? <dependency>

? ? ? ? ? ? <groupId>com.alibaba.cloud</groupId>

? ? ? ? ? ? <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

? ? ? ? ? ? <version>2021.1</version>

? ? ? ? </dependency>

/**

* 跨域配置类

*/

@Configuration

public class CorsConfig {

? ? @Bean

? ? public CorsWebFilter corsFilter() {

? ? ? ? CorsConfiguration config = new CorsConfiguration();

? ? ? ? config.setAllowCredentials(true);

? ? ? ? config.addAllowedMethod("*");

? ? ? ? config.addAllowedOrigin("*");

? ? ? ? config.addAllowedHeader("*");

? ? ? ? UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());

? ? ? ? source.registerCorsConfiguration("/**", config);

? ? ? ? return new CorsWebFilter(source);

? ? }

}

server:

? port: 9005

spring:

? application:

? ? name: nacos-gateway

? cloud:

? ? nacos:

? ? ? discovery:

? ? ? ? server-addr: 192.168.3.41:8848

? ? ? ? username: nacos

? ? ? ? password: nacos

? ? ? ? namespace: public

? ? gateway:

? ? ? discovery:

? ? ? ? locator:

? ? ? ? ? lowerCaseServiceId: true

? ? ? routes:

? ? ? ? - id: order-api

? ? ? ? ? uri: lb://nacos-feign

? ? ? ? ? predicates:

? ? ? ? ? ? - Path=/api/bg/order/**

? ? ? ? ? filters:

? ? ? ? ? ? - StripPrefix=3


https://www.xamrdz.com/backend/33b1929014.html

相关文章: