es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , , ,

Answer

  1. Avatar for 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:

    spring:
      cloud:
        gateway:
          routes:
            - id: external_route
              uri: https://external-application.com
              predicates:
                - Path=/services/external
            - id: local_route
              uri: lb://mylocal
              predicates:
                - Path=/services/local
              filters:
                - RewritePath=/services/local/(?<segment>.**), /mylocal/services/local/${segment}
    

    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 propiedad uri. La segunda ruta con el id local_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 filtro RewritePath 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.

Comments are closed.