Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
En un flujo condicional, las políticas solo se ejecutan si la condición del flujo se evalúa como true
(a diferencia de las políticas asociadas a PreFlow o PostFlow, que siempre se ejecutan). En esta sección se describe cómo crear un flujo condicional.
Acerca de los flujos condicionales
Durante el procesamiento de una solicitud y una respuesta, solo se ejecuta un flujo condicional por segmento: el primer flujo cuya condición se evalúa como true
.
||
(O) y &&
(Y). Sin embargo, de forma predeterminada, el operador ||
tiene una precedencia mayor que el operador &&
. Por ejemplo, una condición escrita como A && B || C && D
se evalúa como A && (B || C) && D
. Asegúrate de poner la expresión entre paréntesis si quieres cambiar la precedencia al usar estos operadores.
En los ejemplos siguientes se muestran algunas formas de usar los flujos condicionales.
Ejemplo 1
La siguiente definición de ProxyEndpoint muestra un flujo condicional que ejecuta el ProxyEndpoint en cualquier solicitud HTTP GET
al proxy de API:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>request.verb="GET"</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Ten en cuenta que la condición hace referencia a la request.verb
variable de flujo. Una variable de flujo es una referencia con nombre que contiene información de estado asociada a una transacción de API procesada por Apigee. Apigee define muchas variables de estado a las que puedes hacer referencia.
Ejemplo 2
Si el backend de tu servicio proporciona informes y previsiones meteorológicas, tu API puede definir dos flujos condicionales que se asignen a esos recursos de la API: /reports
y /forecasts
. Cuando una llamada a la API incluye uno de esos recursos en la URL, la condición se evalúa como verdadera y se ejecuta la lógica asociada al flujo condicional.
Los desarrolladores de aplicaciones acceden a tus recursos enviando solicitudes a una URL con el siguiente formato:
http://myAPIs.myCo.com/weather/reports
También puedes hacerlo de esta otra forma, si lo prefieres:
http://myAPIs.myCo.com/weather/forecasts
En un proxy de API, puedes definir un flujo condicional que corresponda a un recurso específico:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition> <Request/> <Response/> </Flow> <Flow name="Flow-2"> <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
En este ejemplo, se hace referencia a la variable de flujo proxy.pathsuffix
, que contiene la parte del sufijo de la URL usada para acceder al proxy de la API. Después, puedes adjuntar
diferentes políticas al flujo condicional de cada recurso.
Ejemplo: Crear un flujo condicional
El siguiente ejemplo:
- Crea un flujo condicional que se ejecuta solo cuando el mensaje de solicitud es un HTTP
GET
. - Añade una política al nuevo flujo.
Añadir un flujo condicional
Nuevo editor de proxies
Para añadir un flujo condicional, sigue estos pasos:
- Selecciona la pestaña Desarrollar en el editor de proxies.
- En el panel de la izquierda, selecciona Endpoints de proxy > default.
Nota: Es posible que tengas que ampliar el editor visual del panel de la derecha para ver todos los elementos. Para hacerlo, haz clic en la barra que separa el editor visual del editor de texto y arrástrala un poco hacia abajo.
- Haz clic en el botón + situado encima del panel Respuesta.
- En el cuadro de diálogo Añadir flujo condicional, selecciona Ruta y verbo y, en el campo Ruta, introduce el sufijo de ruta que quieras que se incluya en la ruta de la solicitud para que se ejecute el flujo condicional. Consulta el ejemplo 2 de arriba.
El flujo condicional solo se ejecuta si la solicitud es una solicitud
GET
(pero no paraPUT
,POST
, etc.).El nuevo flujo, llamado
Flow-1
, ahora aparece en el panel Endpoint de proxy. El código XML del nuevo flujo condicional se muestra en el editor de texto.
Si quieres, puedes editar el elemento Condition. Consulta Añadir lógica a los flujos.
Vincular una política al flujo
Ahora que has creado el flujo condicional, puedes adjuntarle una política. En el siguiente ejemplo se añade una política de cuota al flujo, que restringe el número de mensajes de solicitud que permite un proxy de API durante un periodo determinado:
- En el panel de la izquierda, haga clic en el botón + situado a la derecha de Políticas.
- En el cuadro de diálogo Crear política, haz clic en el campo Seleccionar tipo de política y desplázate hacia abajo hasta Gestión del tráfico y selecciona Cuota.
- Haz clic en Crear para crear la política.
- En el panel Solicitud, haz clic en el botón + situado junto a Flujo 1.
- En el cuadro de diálogo Añadir paso de política, haz clic en el campo Seleccionar política y selecciona Quota-1.
- Haz clic en Añadir.
En el panel Solicitud ahora se muestran el flujo y la política adjunta, Quota-1.
El editor de texto ahora muestra un paso que contiene la política Quota-1 en el elemento Flow-1 del XML:
Con esta configuración, la política de cuotas se aplicará a las solicitudes de GET
.
Las solicitudes de otros tipos no se tendrán en cuenta para calcular el número máximo de solicitudes de la política de cuota.
Editor de proxies clásico
Para añadir un flujo condicional, selecciona la pestaña Desarrollar en el creador de proxies de API.
Haz clic en en el endpoint que quieras.
El formulario Nuevo flujo condicional te permite asignar un nombre al flujo y configurar una condición. En el siguiente ejemplo, se añade una condición sencilla que evalúa el HTTP del mensaje de solicitud para un verbo GET
(en lugar de PUT
, POST
, etc.) en cualquier URI después de la ruta base.
Consulta cómo crear instrucciones condicionales en Condiciones con variables de flujo.
El nuevo flujo, llamado Flow-1
, aparece ahora en el menú Navegador.
Ahora, observa la configuración XML de ProxyEndpoint. Selecciona Flow-1 en el menú Navegador.
Verás la siguiente configuración.
<PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Request/> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition> </Flow> </Flows> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow>
Una vez que hayas creado un flujo condicional, podrás adjuntarlo a una política. Con el flujo seleccionado, haz clic en el icono + Paso del diagrama de solicitud o respuesta para añadir una política nueva o que ya tengas al flujo.
Al adjuntar la política al flujo seleccionado, estás configurando el proxy de API para que aplique la política de cuotas solo a las solicitudes realizadas a esa combinación de URI y verbo del flujo. Por ejemplo, si adjuntas la política al flujo learn en la solicitud, se generará el siguiente código XML en el editor de texto:
<ProxyEndpoint name="default"> ... <Flow name="issue"> <Description/> <Request> <Step> <Name>Quota-2</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition> </Flow> ... </ProxyEndpoint>
En esta configuración, si llega una solicitud GET
al proxy de API con un patrón de URI .../issue/** (/issue/ con cualquier elemento del URI después de la última barra), se aplicará la cuota a esa llamada a la API.
Pasos siguientes
En los siguientes temas se explica con más detalle cómo crear condiciones y usar variables: