Flujos condicionales

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.

Puede crear condiciones que incluyan los operadores ||(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:

  1. Selecciona la pestaña Desarrollar en el editor de proxies.
  2. En el panel de la izquierda, selecciona Endpoints de proxy > default.

    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.

  3. Haz clic en el botón + situado encima del panel Respuesta.

    Botón Añadir flujo condicional

  4. 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.

    Botón Añadir flujo condicional

    El flujo condicional solo se ejecuta si la solicitud es una solicitud GET (pero no para PUT, POST, etc.).

    El nuevo flujo, llamado Flow-1, ahora aparece en el panel Endpoint de proxy.

    Flujo condicional que se muestra en los endpoints de proxy.

  5. El código XML del nuevo flujo condicional se muestra en el editor de texto.

    Flujo condicional que se muestra en los endpoints de proxy.

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:

  1. En el panel de la izquierda, haga clic en el botón + situado a la derecha de Políticas.
  2. 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.
  3. Haz clic en Crear para crear la política.
  4. En el panel Solicitud, haz clic en el botón + situado junto a Flujo 1.

    Haz clic en el botón más situado junto a Flow-1 en el panel Solicitud.

  5. En el cuadro de diálogo Añadir paso de política, haz clic en el campo Seleccionar política y selecciona Quota-1.
  6. Haz clic en Añadir.

En el panel Solicitud ahora se muestran el flujo y la política adjunta, Quota-1.

Panel de solicitudes que muestra el nuevo flujo y la política de cuotas.

El editor de texto ahora muestra un paso que contiene la política Quota-1 en el elemento Flow-1 del XML:

Flujo condicional y política de cuota mostrados en 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.

Pestaña Desarrollar de Creador de proxies

Haz clic en en el endpoint que quieras.

Botón Añadir flujo condicional

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.

En el panel Nuevo flujo condicional, el flujo se llama &quot;Flujo-1&quot; y se han configurado el tipo de condición, la ruta y el verbo.

Consulta cómo crear instrucciones condicionales en Condiciones con variables de flujo.

El nuevo flujo, llamado Flow-1, aparece ahora en el menú Navegador.

Flow-1 highlighted

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.

En el menú de navegación, se destaca un ejemplo de flujo condicional llamado &quot;issue&quot; y, en el panel de flujo, se muestra el botón Paso.

En el panel Añadir paso, se crea una instancia de política con el tipo de política Cuota y el nombre visible Cuota-2.

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: