Directorio artículo
- 0 Medio Ambiente
- 1 Introducción
- 2 Concepto
- Sintaxis 3 de puerta de enlace básico
- 3.1 Creación de proyecto springboot (puerta de enlace)
- 3.2 Agregar la dependencia
- 3.3 YML 配置
- configuración clase de arranque 3.4 bean
- 3.5 Inicio de puerta de enlace
- 4 servicio combinado micro
- 4 afirman
- 4.1 afirmación Tiempo
- 4.2 afirma camino
- afirmación de 4.3 consulta
- 4.4 Método afirmación
- 4.5 afirmaciones utilizan en combinación
- 4.6 Custom afirmación de enrutamiento
- filtro de 5
- 6 Resumen
0 Medio Ambiente
- Sistema operativo: win10
- Editor: idea
- versión springcloud: versión H
1 Introducción
Primavera Nube Gateway mediante resorte Boot y proporcionado primavera Webflux Netty entorno subyacente, y no puede ser utilizado con el contenedor de Servlet convencional, no empaqueta en un paquete WAR.
- característica
- reescritura de ruta
- enrutamiento dinámico
- limitando
- 集成 springcloud DiscoveryClient
- Integrado hystrix disyuntor
- contraste
- la familia de puerta de enlace es una perfecta integración con otros componentes de la familia de primavera primavera
- zuul no soporta servicios de larga (WebSocket)
- actualización de recursos que consume muchos recursos de pasarela y el rendimiento es más fuerte que zuul (+ asíncrono no-bloqueo)
- limitando
2 Concepto
- Comprensión de conceptos
- Ruta -> elemento de base (Composición -> ID + URI + + filtro afirmación) de la puerta de enlace a la pasarela de una solicitud para encaminar un emparejado (Mapping) mediante la afirmación de una afirmación gateway Handler Mapping es cierto cuando la ruta coincidente (Escena: fuera de servicio I fui a la puerta y corrió alrededor de una dirección determinada, pero los edificios de seguridad que sostienen amenazadora pistola de mí (afirmación) de prueba se detuvo un poco la temperatura pasa parecía seguro de que llevas una máscara por lo que no fue malo en un conjunto de edificios de espalda una habitación)
- predicado
- java8 HTTP solicitud que coincide con una función (condición de coincidencia)
- filtrar
- Algunos solicitud de procesamiento de servicio antes / después
Sintaxis 3 de puerta de enlace básico
3.1 Creación de proyecto springboot (puerta de enlace)
3.2 Agregar la dependencia
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
3.3 YML 配置
Visitamos dirección de destino http://httpbin.org
spring:
cloud:
gateway:
routes:
- id: hi
uri: http://httpbin.org
predicates:
- Path=/get
propiedades esta configuración no se recomienda (engorrosos) -
configuración clase de arranque 3.4 bean
la configuración y el efecto yml es el mismo ()
/* @Bean
RouteLocator routeLocator(RouteLocatorBuilder builder){
// 可以添加多个
return builder.routes()
// 访问网址 http://httpbin.org/get
// 通过网关后访问 http://localhost:8080/get
.route("hi", r -> r.path("/get").uri("http://httpbin.org"))
.build();
}*/
3.5 Inicio de puerta de enlace
4 servicio combinado micro
O seguir utilizando el anterior proveedor de servidor de puerta de enlace y Eureka y
dijo más tarde que permiten el inicio de las tres clases de arranque / rearranque
4.1 YML 配置
spring:
cloud:
gateway:
discovery:
locator:
# 开启自动代理
enabled: true
# 服务id为true --> 这样小写服务就可访问了
#lower-case-service-id: true
application:
name: gateway
eureka:
client:
service-url:
# defaultZone: http://localhost:1234/eureka
defaultZone: http://localhost:8761/eureka
#日志
logging:
level:
org.springframework.cloud.gateway:
debug
4.2 Habilitar
- 访问 http: // localhost: 8080 / proveedor / hola
- Servicio minúsculas
#启用它设为true即可 lower-case-service-id: true
spring: cloud: gateway: discovery: locator: # 开启自动代理 enabled: true # 服务id为true --> 这样小写服务就可访问了 lower-case-service-id: true application: name: gateway eureka: client: service-url: # defaultZone: http://localhost:1234/eureka defaultZone: http://localhost:8761/eureka #日志 logging: level: org.springframework.cloud.gateway: debug
- servidor de Eureka reinicio y la puerta de enlace y el consumidor
- En esta visita se quejan los servicios de capital
4 afirman
4.1 afirmación Tiempo
- Antes -> tiempo de solicitud se dirigirá ante un determinado punto en el tiempo
- Después -> tiempo de solicitud se dirigirá después de un cierto punto en el tiempo
- Entre -> tiempo petición entre dos puntos de tiempo (dos puntos en el tiempo separados)
spring:
cloud:
gateway:
routes:
- id: before_route
uri: http://www.baidu.com
# 时间断言
predicates:
- Before=2020-03-31T08:38:47+08:00
若是改为Before=2020-03-24T08:38:47+08:00
4.2 afirma camino
no se repite añadió el comienzo de la ruta = get
spring:
cloud:
gateway:
routes:
# 路径断言 访问指定地址http://www.w3school.com.cn/tcpip/*
# 也就是localhost:8080/tcpip/*
- id: w3c_route
uri: http://www.w3school.com.cn
predicates:
- Path=/tcpip/{segment}
- visita exitosa
- El camino del fracaso de no acceso
afirmación de 4.3 consulta
spring:
cloud:
gateway:
routes:
# 默认参数
- id: query_route
uri: http://httpbin.org
predicates:
# 可以指定参数和值 ?name=1开头的值 才允许访问
- Query=name,1.*
- No hay parámetros adicionales
- Más 1 parámetro en el comienzo del éxito
- Además de 2 parámetros en el comienzo de la insuficiencia
4.4 Método afirmación
- YML 配置
spring:
cloud:
gateway:
routes:
- id: method_route
uri: http://httpbin.org
# 该网站post请求405 --> 没有post 只能用get测试 用post测试get请求404就对了
predicates:
- Method=GET
- Cuando la solicitud POST 404 (si el método post 405 indica que el sitio no publica una solicitud) el éxito va captura de pantalla no es el comienzo de una pasta
4.5 afirmaciones utilizan en combinación
spring:
cloud:
gateway:
routes:
# 组合使用
- id: many_route
uri: http://httpbin.org
predicates:
# 可以指定参数和值 ?name=1开头的值
- Query=name,1.*
- Method=GET
- After=2020-03-01T08:38:47+08:00
4.6 Custom afirmación de enrutamiento
- Configuración y personalización de fábrica de la afirmación
// 自定义路由断言工厂
// 命名需要以RoutePredicateFactory结尾 比aRoutePredicateFactory 那么yml在使用时a就是断言工厂的名字
@Component
public class CheckAuthRoutePredicateFactory extends AbstractRoutePredicateFactory<CheckAuthRoutePredicateFactory.User> {
public CheckAuthRoutePredicateFactory() {
super(User.class);
}
// 自定义配置类
@Override
public Predicate<ServerWebExchange> apply(User config) {
return exchange -> {
System.out.println("进入apply:" + config.getName());
if (config.getName().equals("kitty")){
return true;
}
return false;
};
}
public static class User{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
- YML 配置
spring:
cloud:
gateway:
routes:
# 自定义断言工厂 -name就是之前以xxxRoutePredicateFactory的xxxx为断言工厂名
- id: customer_route
uri: http://httpbin.org
predicates:
- name: CheckAuth
args:
name: kitty
- Cuando el nombre del parámetro = gatito con la fábrica de encargo getNombre afirmación coherente
- Cuando el parámetro es incompatible con un nombre personalizado = gatito planta afirmación getName
filtro de 5
pasarela filtros Tipos
- GlobalFilter
- GatewayFilter
5.1 filtro AddRequestParameter
Añadir automáticamente los parámetros adicionales al añadir petición
6 Resumen
- El grano de configuración básica o yml clase de arranque dispuestas en la xxx rutas
- Aprender proveedor de servicios, así como la integración de Eureka servidor de puerta de enlace y configuración del servicio de conexión Agregar yml dependientes que permite la configuración de proxy automático y establecer el registro cuando se accede a servicios sensibles
- Afirmación de aprendizaje
- camino de la afirmación -> coincide con la URL
- (Reglas de filtrado de parámetros personalizados)> parámetro coincidente similares name = xxx - consulta afirmación?
- método de afirmación -> HTTP método de coincidencia
- afirmación tiempo - después> antes / / entre
- Composición afirmación -> antes de la combinación orgánica de estas afirmaciones
- afirmación de encargo -> necesidad de heredar extiende fábrica personalizada AbstractRoutePredicateFactory configurado para que coincida con el yml
- AddRequestParameter aprendizaje filtro de añadir parámetros adicionales