Esta página se aplica a Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.
En un flujo condicional, las políticas se ejecutan solo si la condición del flujo se evalúa como true
(a diferencia de las políticas adjuntas a PreFlow o PostFlow, que siempre se ejecutan). En esta sección, se describe cómo crear un flujo condicional.
Información sobre 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
.
En los siguientes ejemplos, se ilustran algunas formas de usar flujos condicionales.
Ejemplo 1
En la siguiente definición de ProxyEndpoint, se muestra un flujo condicional que el ProxyEndpoint ejecuta 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 recibe referencias con nombre que contienen información de estado asociada con una transacción de API que procesa Apigee. Apigee define muchas variables de estado a las que puedes hacer referencia.
Ejemplo 2
Si el backend de tu servicio proporciona informes sobre el clima y el pronóstico, tu API podría definir dos flujos condicionales que se asignen a esos recursos de 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 adjunta al flujo condicional.
Los desarrolladores de apps acceden a tus recursos mediante solicitudes a una URL con el siguiente formato:
http://myAPIs.myCo.com/weather/reports
o:
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, haces referencia a la variable de flujo proxy.pathsuffix
, que contiene la parte del sufijo de la URL que se usa para acceder al proxy de API. Luego, puedes adjuntar diferentes políticas al flujo condicional de cada recurso.
Ejemplo: Crea un flujo condicional
En el siguiente ejemplo:
- Crea un flujo condicional que se ejecuta solo cuando el mensaje de solicitud es un
GET
HTTP. - Agrega una política al flujo nuevo.
Agrega un flujo condicional
Editor de proxies nuevo
Para agregar un flujo condicional, haz lo siguiente:
- Selecciona la pestaña Desarrollo (Develop) en el Editor de proxies.
- Selecciona Extremos de proxy > predeterminado (Proxy endpoints > default) en el panel izquierdo.
Nota: Es posible que debas expandir el editor visual en el panel de la derecha para ver todos los elementos. Para ello, haz clic y arrastra el divisor entre el editor visual y el editor de texto un poco hacia abajo.
- Haz clic en el botón + encima del panel Respuesta (Response).
- En el cuadro de diálogo Agregar flujo condicional (Add conditional flow), selecciona Ruta de acceso y verbo (Path and verb) y, en el campo Ruta de acceso (Path), ingresa el sufijo de la ruta de acceso que deseas en la ruta de la solicitud para que se ejecute el flujo condicional. Consulta el Ejemplo 2 anterior.
El flujo condicional solo se ejecuta si la solicitud es
GET
(pero no paraPUT
,POST
, etc.).El flujo nuevo, llamado
Flow-1
, ahora aparece en el panel Extremo de proxy (Proxy Endpoint). El código XML del nuevo flujo condicional se muestra en el editor de texto.
Puedes editar el elemento Condición si lo deseas. Consulta Añade lógica a los flujos.
Conecta una política al flujo
Ahora que creaste el flujo condicional, puedes adjuntarle una política. En el siguiente ejemplo, se agrega una política de cuotas, que restringe la cantidad de mensajes de solicitud que un proxy de API permite durante un período al flujo:
- En el panel de la izquierda, haz clic en el botón + a la derecha de Políticas.
- En el cuadro de diálogo Crear política, haz clic en el campo Seleccionar un tipo de política y desplázate hacia abajo hasta Administración del tráfico y selecciona Cuota.
- Haz clic en Crear para crear la política.
- Haz clic en el botón + junto a Flow-1 en el panel Solicitud (Request).
- En el cuadro de diálogo Agregar paso de la política, haz clic en el campo Select existing policy y selecciona Quota-1.
- Haz clic en Agregar.
En el panel Solicitud (Request), ahora se muestra 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, se aplicará la política de cuotas para las solicitudes GET
.
Las solicitudes de otros tipos no contribuirán a la cantidad máxima de solicitudes en la política de cuotas.
Editor de proxies clásico
Para agregar un flujo condicional, selecciona la pestaña Desarrollar en el compilador de proxy de API.
Haz clic en en el extremo deseado.
El nuevo formulario de flujo condicional te permite nombrar el flujo y configurar una condición. En el siguiente ejemplo, agregas una condición simple que evalúa el HTTP del mensaje de solicitud para un verbo GET
(en contraposición a PUT
, POST
, etc.) en cualquier URI después de la ruta base.
(Obtén más información sobre cómo crear declaraciones condicionales en Condiciones con variables de flujo).
El nuevo flujo, llamado Flow-1
, ahora aparece en el menú Navegador.
Ahora observa la configuración de XML para 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, estará disponible para la vinculación de políticas. Con el flujo seleccionado, haz clic en el ícono + Paso (+ Step) en el diagrama de solicitud o respuesta para agregar una política nueva o existente al flujo.
Cuando adjuntas la política al flujo seleccionado, configuras el proxy de API para aplicar la política de cuotas solo a las solicitudes realizadas a esa combinación de URI y verbo. Por ejemplo, si adjuntas la política al flujo de aprendizaje en la solicitud, se genera el siguiente 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 se realiza una solicitud GET
en el proxy de API con un patrón de URI de .../issue/** (/issue/ con todo lo que esté en el URI después de la última barra diagonal), se aplica la cuota en esa llamada a la API.
Próximos pasos
En los siguientes temas, se proporcionan más detalles sobre cómo crear condiciones y usar variables: