Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Una ruta determina la ruta de una solicitud desde el ProxyEndpoint
hasta el TargetEndpoint
. La ruta incluye la URL que se usa para acceder a la API ProxyEndpoint
y la URL del servicio de backend definido por TargetEndpoint
.
En este vídeo se explica qué son las rutas y la relación entre ProxyEndpoint
y TargetEndpoint
.
Determinar la URL del endpoint del proxy de API
En la siguiente imagen se muestra una solicitud que llega a ProxyEndpoint
desde una aplicación y que se dirige al servicio de backend:
Después de crear un proxy de API en Apigee, la URL predeterminada que usa una aplicación 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 has añadido al DNS o una dirección IP.
- La ruta base y la ruta de recurso se definen al crear el proxy de API.
Cuando Apigee recibe una solicitud, analiza la URL para dirigirla al ProxyEndpoint
correcto. Por ejemplo, la siguiente URL se usa para acceder a un proxy de API:
http://example.com/v1/weather/forecastrss
Si examinas la ProxyEndpoint
definición 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 ha implementado en uno o varios entornos de ese grupo de entornos. Para obtener más información, consulta Acerca de los entornos y los grupos de entornos. - La segunda parte de la URL,
/v1/weather
, se determina mediante el elemento<BasePath>
delProxyEndpoint
. Definiste la ruta base al crear el proxy. La ruta base debe ser única para el proxy de API del entorno, de modo que dos proxies de API del 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>
.
Vídeo: consulta un breve vídeo para obtener más información sobre los endpoints de proxy de API.
Determinar la URL del endpoint de destino
El elemento <RouteRule>
de una definición de ProxyEndpoint
determina el destino del proxy de API y se evalúa después de que se hayan procesado todas las políticas de PreFlow, Conditional Flows y PostFlow de la solicitud ProxyEndpoint
.
Un ProxyEndpoint
puede definir el objetivo de la siguiente manera:
- Una URL directa a un servicio de backend.
- Una sola definición de
TargetEndpoint
. - Varios
TargetEndpoint
s en los que el proxy de API delega la solicitud en un punto de conexión de destino en función de una condición. - Ruta o destino nulos, lo que significa que la solicitud no se reenvía a ningún destino. En su lugar, todo el procesamiento de la solicitud y la generación de la respuesta se producen en Apigee.
Vídeo: consulta un breve vídeo para obtener más información sobre los endpoints de destino.
URL directa
Un ProxyEndpoint
puede invocar directamente un servicio de backend sin pasar por ninguna configuración de TargetEndpoint
ProxyEndpoint
. Por ejemplo, el siguiente <RouteRule>
siempre hace una llamada HTTP a http://example.com/myAPI:
.
<RouteRule name="default"> <URL>http://example.com/myAPI</URL> </RouteRule>
Sin embargo, como no hay TargetEndpoint
, solo puedes añadir políticas a los flujos definidos por ProxyEndpoint
.
Un solo objetivo
En una definición de destino única, ProxyEndpoint
hace referencia a una única definición de TargetEndpoint
por nombre, tal 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>
de TargetEndpoint
determina la ubicación del servicio backend. En la imagen de arriba, la URL de destino es http://weather.yahooapis.com
.
Objetivos condicionales
La etiqueta <RouteRule>
te permite dirigir una solicitud a un objetivo en función de una condición. Puedes usar variables de flujo, parámetros de consulta, encabezados HTTP, contenido de mensajes o información contextual, como la hora del día y la configuración regional, para determinar el endpoint de destino. Por ejemplo, puedes incluir un área geográfica, como EE. UU. y Reino Unido, en una URL de solicitud. Después, puedes dirigir una solicitud a un endpoint de destino en función de la región.
La siguiente regla de ruta 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 tiene varias reglas de ruta, cree una como predeterminada, es decir, como una regla de ruta sin ninguna condición. Asegúrate de que la regla de ruta predeterminada se defina en último lugar en la lista de rutas condicionales, ya que las reglas se evalúan de arriba abajo en ProxyEndpoint
.
Consulta también las rutas condicionales y la referencia de condiciones.
Vídeo: consulta un breve vídeo para saber cómo dirigir a un endpoint de destino mediante destinos condicionales.
Ruta nula
Una ruta nula admite situaciones en las que no es necesario reenviar el mensaje de solicitud a un TargetEndpoint
. Esto resulta útil cuando el ProxyEndpoint
realiza todo el procesamiento necesario, por ejemplo, usando 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 configuración de proxies de APIs
- Referencia de propiedades de puntos de conexión
- Balanceo de carga en servidores de backend