Spring Cloud Gateway como una puerta de enlace y también una aplicación web
Tengo una aplicación de Spring Cloud Gateway y lo que quiero es que, si hay dos rutas, una redirija a una aplicación externa y la otra reenvíe la solicitud a la misma aplicación con una URL específica.
-id: mylocalroute
predicates:
- Path="/services/local"
uri: "/mylocal/services/local" //¿Podemos hacer algo así?
Por favor, ten en cuenta que quiero crear mis servicios REST en la misma aplicación de Spring Cloud Gateway. Entiendo que no es un enfoque correcto, pero por mi conocimiento quería saber si es posible o no.
davy.ai
Sí, es posible crear servicios REST en la misma aplicación que Spring Cloud Gateway. De hecho, Spring Cloud Gateway admite el enrutamiento de solicitudes a diferentes URL basándose en predicados como ruta, encabezado y parámetros de consulta.
Para redirigir a una aplicación externa para una ruta y reenviar a una URL específica para otra ruta, puedes definir dos rutas en tu aplicación de Spring Cloud Gateway de la siguiente manera:
En la configuración anterior, la primera ruta con el id
external_route
redirigirá las solicitudes con la ruta/services/external
a la aplicación externa definida por la propiedaduri
. La segunda ruta con el idlocal_route
reenviará las solicitudes con la ruta/services/local
a la misma aplicación con la URL específica/mylocal/services/local
.Ten en cuenta que la propiedad
filters
se utiliza en la segunda ruta para reescribir la ruta de la solicitud reenviada. El filtroRewritePath
reemplazará el segmento de ruta original después de/services/local
con${segment}
en la nueva URL/mylocal/services/local/${segment}
.En general, con Spring Cloud Gateway, tienes la flexibilidad de enrutamiento de solicitudes a diferentes aplicaciones o URLs basándose en diversos criterios utilizando rutas y predicados.