[SpringCloud] Gateway comúnmente utilizado Predicate (dieciocho)

Introducción a Predicate

  Spring Cloud Gateway coincide con el enrutamiento como parte de la HandlerMappinginfraestructura de Spring WebFlux  . Spring Cloud Gateway incluye muchas fábricas de aserción de enrutamiento incorporadas. Todas estas afirmaciones coinciden con los diferentes atributos de la solicitud HTTP. Usted puede plantar varias rutas de afirmaciones lógicas y anddeclaraciones utilizados en combinación .

  Sitio web oficial: https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.2.RELEASE/reference/html/#gateway-request-predicates-factories

  Predicado utilizado comúnmente:

  

 

Predicado utilizado comúnmente

  Referencia de construcción del proyecto de demostración: [SpringCloud] Configuración de enrutamiento de puerta de enlace (diecisiete) , solicitud de demostración utilizando el comando curl

  1 、 Después de predicar ruta

  La After断言un parámetro, una datetime(que es el Java  ZonedDateTime). La aserción coincide con las solicitudes que ocurrieron después de la fecha y hora especificadas. El siguiente ejemplo configura la afirmación después del enrutamiento:

  Ejemplo 1. application.yml

1  primavera:
 2    nube:
 3      puerta de enlace:
 4        rutas:
 5          - id: after_route
 6            uri: http: // localhost: 8001 7            predicados:
 8              - Después = 2020-04-20T23: 57: 57.308 + 08: 00 [Asia / Llevar a la fuerza]

  Esta ruta cumple con cualquier solicitud después de las 23:57 huso horario (Shanghai) del 20 de abril de 2020.

  Comando de solicitud de prueba: curl http: // localhost: 9527 / payment / get / 1

  2 、 Antes de predicar ruta

  La Before断言un parámetro, una datetime(que es el Java  ZonedDateTime). Esta afirmación coincide con la solicitud que ocurrió antes de la especificada datetime. El siguiente ejemplo configura aserciones previas al enrutamiento:

  Ejemplo 2. application.yml

1  primavera:
 2    nube:
 3      puerta de enlace:
 4        rutas:
 5          - id: before_route
 6            uri: http: // localhost: 8001 7            predicados:
 8              - Antes = 2020-04-21T23: 57: 57.308 + 08: 00 [Asia / Llevar a la fuerza]

  Esta ruta cumple con cualquier solicitud antes de las 23:57 huso horario (Shanghai) del 21 de abril de 2020.

  3 、 Entre ruta Predicate

  Los Between断言dos argumentos, datetime1y datetime2 este es el Java  ZonedDateTimeobjetos. Esta afirmación coincide con las solicitudes datetime1que ocurrieron después y antes datetime2. Este datetime2parámetro debe ser publicado datetime1. El siguiente ejemplo configura aserciones entre rutas:

  Ejemplo 3. application.yml

1  primavera:
 2    nube:
 3      puerta de enlace:
 4        rutas:
 5          - id: between_route
 6            uri: http: // localhost: 8001
 7            predicados:
 8              - Entre = 2020-04-20T23: 57: 57.308 + 08: 00 [Asia / Shanghai], 2020-04-21T23: 57: 57.308 + 08: 00 [Asia / Shanghai]

  4 、 Predicado de ruta de cookies

  Dicho dicho Cookie断言toma dos parámetros, la cookie  namey regexp(que es una expresión regular de Java). La aserción coincide con una cookie con el nombre dado y cuyo valor coincide con la expresión regular. El siguiente ejemplo configura aserciones de enrutamiento de cookies:

  Ejemplo 4. application.yml

1  resorte:
 2    nube:
 3      puerta de enlace:
 4        rutas:
 5          - id: cookie_route
 6            uri: http: // localhost: 8001
 7            predicados:
 8              - Cookie = nombre de usuario, xiaoming

  Esta ruta tiene un nombre coincidente para el nombre de usuario y solicitar una cookie Xiaoming expresiones regulares.

  Comando de solicitud de prueba: curl http: // localhost: 9527 / payment / get / 1 --cookie "username = xiaoming"    

  5 、 Predicado de ruta de encabezado

  La descripción Header断言toma dos parámetros, un encabezado namey uno regexp(que es una expresión regular de Java). La aserción coincide con el encabezado con el nombre dado y cuyo valor coincide con la expresión regular. El siguiente ejemplo configura las aserciones de enrutamiento de encabezado:

  Ejemplo 5. application.yml

1 resorte: 
2   nube: 
3     puerta de enlace: 
4  rutas:  5 - id: header_route  6 uri: http: // localhost: 8001 7 predicados: 8 - Header = X-Request-Id, \ d +

  Si la solicitud se nombra con X-Request-Idel valor de \d+la expresión regular coincidente cabecera (es decir, un valor de uno o más dígitos), entonces la coincidencia de ruta .

  Comando de solicitud de prueba: curl http: // localhost: 9527 / payment / get / 1 -H "X-Request-Id: 123"

  6 Pred Predicado de ruta de host

  Esto Host断言toma un parámetro: la lista de nombres de host patterns. Este patrón es un patrón de estilo Ant con .separadores . Aserción y Hostcoincidencia de patrones de cabecera a juego. El siguiente ejemplo configura las aserciones de ruta de host:

  Ejemplo 6. application.yml

1 resorte: 
2 nube: 
3 puerta de enlace: 
4 rutas: 
5 - id: host_route 
6 uri: http: // localhost: 8001 
7 predicados: 
8 - Host = **. X.com

  Si la solicitud tiene dicho Hostvalor de encabezado para la coincidencia de ruta **. X.com

  Comando de solicitud de prueba: curl http: // localhost: 9527 / payment / get / 1 -H "Host: demo1.x.com"

  7 、 Método Predicado de ruta

  El parámetro Method断言requerido methodses uno o más parámetros: método HTTP para que coincida. El siguiente método de configuración de ejemplo enruta aserciones:

  Ejemplo 7. application.yml
1 resorte: 
2 nube: 
3 puerta de enlace: 
4 rutas: 
5 - id: método_ruta 
6 uri: http: // localhost: 8001 
7 predicados: 
8 - Método = GET

  Comando de solicitud de prueba: curl http: // localhost: 9527 / payment / get / 1 -X GET

  8 、 Ruta Ruta Predicado

  Los Path断言dos parámetros: una lista de la primavera PathMatcher patternsy un distintivo de llamada opcional matchOptionalTrailingSeparator. El siguiente ejemplo configura las aserciones de enrutamiento de ruta:

  Ejemplo 8. application.yml
1 resorte: 
2 nube: 
3 puerta de enlace: 
4 rutas: 
5 - id: ruta_ruta 
6 uri: http: // localhost: 8001 
7 predicados: 
8 - Ruta = / pago / get / **

  Comando de solicitud de prueba: curl http: // localhost: 9527 / payment / get / 1 

  9 、 Predicar ruta de consulta

  Lo descrito Query断言toma dos parámetros: requerido paramy opcional regexp(que es una expresión regular de Java). El siguiente ejemplo configura aserciones de enrutamiento de consultas:

  Ejemplo 9. application.yml

1 resorte: 
2 nube: 
3 puerta de enlace: 
4 rutas: 
5 - id: query_route 
6 uri: http: // localhost: 8001 
7 predicados: 
8 - Query = green

  Si la solicitud contiene greenparámetros de consulta, la ruta anterior coincide .

  Comando de solicitud de prueba: curl http: // localhost: 9527 / payment / get / 1? Green = 1

  10 、 RemoteAddr Predicado de ruta

RemoteAddrLa lista requerida para   la aserción sourceses una cadena de notación CIDR (IPv4 o IPv6), como 192.168.0.1/16(donde 192.168.0.1hay una dirección IP y 16una máscara de subred). El siguiente ejemplo configura un predicado de enrutamiento RemoteAddr:

  Ejemplo 10. application.yml
1 resorte: 
2 nube: 
3 puerta de enlace: 
4 rutas: 
5 - id: query_route 
6 uri: http: // localhost: 8001 
7 predicados: 
8 - RemoteAddr = 192.168.1.1 / 24

  Solicitar comando de prueba: curl http://192.168.1.4:9527/payment/get/1

  11 Pred Predicado de ruta de peso

  Esto Weight断言tiene dos parámetros: groupy weight(a int). Los pesos se calculan en grupos. El siguiente ejemplo configura aserciones de enrutamiento de peso:

  Ejemplo 11. application.yml

1  resorte:
 2    puerta de enlace:
 3      descubrimiento:
 4        rutas:
 5          - id: weight_high
 6            uri: http: // localhost: 8001
 7            predicados:
 8              - Weight = group1, 8
 9          - id: weight_low
 10            uri: http: // localhost : 8002
 11            predicados:
 12              - Peso = grupo1, 2

  Esta ruta reenviará aproximadamente el 80% del tráfico a http: // localhost: 8001 y aproximadamente el 20% del tráfico a http: // localhost: 8001

  Solicitar comando de prueba: curl http: // localhost: 9527 / payment / get / 1

 

Supongo que te gusta

Origin www.cnblogs.com/h--d/p/12741901.html
Recomendado
Clasificación