Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
Una ruta determina la ruta de acceso de una solicitud desde ProxyEndpoint
hacia TargetEndpoint
. La URL que se usa para acceder a la API ProxyEndpoint
y la URL del servicio de backend definido por TargetEndpoint
se incluyen en la ruta.
Mira este video para obtener una introducción a las rutas, en el que se describe la relación entre ProxyEndpoint
y TargetEndpoint
.
Determina la URL del extremo del proxy de API
En la siguiente imagen, se muestra una solicitud que llega al ProxyEndpoint
desde una aplicación y esa solicitud dirigida al servicio de backend:
Después de crear un proxy de API en Apigee, la URL predeterminada que usa una app para acceder al proxy tiene el siguiente formato:
https://www.example.com/shopping/cart/addItem |_____________| |___________| |_____| | | | hostname basepath resource
Donde:
- El nombre de host es un dominio que agregaste a DNS o a una dirección IP.
- La ruta base y la ruta de recursos se definen cuando creas el proxy de API.
Cuando llega una solicitud a Apigee, Apigee analiza la URL para dirigir la solicitud al ProxyEndpoint
correcto. Por ejemplo, se usa la siguiente URL para acceder a un proxy de API:
http://example.com/v1/weather/forecastrss
Si examinas la definición de ProxyEndpoint
del proxy de API en la figura anterior, puedes ver cómo se analiza esta URL:
- La parte del dominio de la URL,
http://example.com
, corresponde a un nombre de host definido en un grupo de entornos. El proxy se implementó en uno o más entornos dentro de ese grupo de entorno. Para obtener más información, consulta Información acerca de los entornos y grupos de entornos. - La segunda parte de la URL,
/v1/weather
, se determina mediante el elemento<BasePath>
en elProxyEndpoint
. Definiste la ruta base cuando creaste el proxy. La ruta base debe ser única para el proxy de API del entorno a fin de que dos proxies de API en el mismo entorno no tengan la misma ruta base. - La tercera parte de la URL,
/forecastrss
, es un recurso definido por el proxy de API con el flujo condicional correspondiente definido por el elemento<Flows>
.
Video: Mira un video breve para obtener más información sobre los extremos del proxy de API
Determina la URL del extremo de destino
El elemento <RouteRule>
en una definición ProxyEndpoint
determina el destino del proxy de API y se evalúa después de todas las políticas en el flujo previo, los flujos condicionales y el flujo posterior de la solicitud ProxyEndpoint
se procesen.
Un ProxyEndpoint
puede definir el destino de la siguiente manera:
- Una URL directa a un servicio de backend.
- Una definición de
TargetEndpoint
única. - Varios
TargetEndpoint
en los que el proxy de API delega la solicitud a un extremo de destino en función de una condición. - Ruta o destino nulo, lo que significa que la solicitud no se reenvía a un destino. En cambio, todo el procesamiento de la solicitud y la generación de la respuesta se producen en Apigee.
Video: Mira un video breve para obtener más información sobre los extremos de destino.
URL directa
Un ProxyEndpoint
puede invocar directamente un servicio de backend, mediante la cual se puede omitir cualquier configuración de TargetEndpoint
con nombre. Por ejemplo, la siguiente <RouteRule>
siempre realiza una llamada HTTP a http://example.com/myAPI:
.
<RouteRule name="default"> <URL>http://example.com/myAPI</URL> </RouteRule>
Sin embargo, debido a que no hay un TargetEndpoint
, solo puedes agregar políticas a los flujos que define ProxyEndpoint
.
Objetivo único
En una definición de destino único, el ProxyEndpoint
hace referencia a una sola definición de TargetEndpoint
por nombre, como se muestra en la figura anterior:
<RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule>
Todas las solicitudes a este proxy de API se dirigen a la misma definición de TargetEndpoint
. La etiqueta <URL>
en TargetEndpoint
determina la ubicación del servicio de backend. En la figura anterior, la URL de destino es http://weather.yahooapis.com
.
Objetivos condicionales
La etiqueta <RouteRule>
te permite dirigir una solicitud a un destino según una condición. Puedes usar variables de flujo, parámetros de búsqueda, encabezados HTTP, contenido de mensajes o información contextual como la hora del día y la configuración regional para determinar el extremo de destino. Por ejemplo, puedes incluir un área geográfica, como EE.UU. y Reino Unido, en una URL de solicitud. Luego, puedes enrutar una solicitud a un extremo de destino en función de la región.
La siguiente regla de enrutamiento evalúa un encabezado HTTP en una solicitud. Si el encabezado HTTP routeTo
tiene el valor TargetEndpoint1
, la solicitud se reenvía al TargetEndpoint
llamado TargetEndpoint1
. De lo contrario, la solicitud se reenvía a TargetEndpoint2
.
<RouteRule name="MyRoute"> <Condition>request.header.routeTo = "TargetEndpoint1"</Condition> <TargetEndpoint>TargetEndpoint1</TargetEndpoint> </RouteRule> <RouteRule name="default"> <TargetEndpoint>TargetEndpoint2</TargetEndpoint> </RouteRule>
Si tienes varias reglas de ruta, crea una como predeterminada, es decir, como una regla de ruta sin condición. Asegúrate de que la regla de ruta predeterminada se defina por última vez en la lista de rutas condicionales, ya que las reglas se evalúan de arriba a abajo en el ProxyEndpoint
.
Consulta también Rutas condicionales y Referencia de condiciones.
Video: Mira un video breve para aprender a enrutar un extremo de destino con destinos condicionales.
Ruta nula
Una ruta nula admite situaciones en las que no es necesario reenviar el mensaje de solicitud a un TargetEndpoint
. Esto es útil cuando el ProxyEndpoint
realiza todo el procesamiento necesario, por ejemplo, mediante JavaScript para llamar a un servicio externo.
En el siguiente ejemplo, se define una ruta nula:
<RouteRule name="GoNowhere"/>
Más información
- Referencia de la configuración del proxy de API
- Referencia de propiedades de extremos
- Balanceo de cargas entre servidores de backend