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 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:

  1. Selecciona la pestaña Desarrollo (Develop) en el Editor de proxies.
  2. Selecciona Extremos de proxy > predeterminado (Proxy endpoints > default) en el panel izquierdo.

    Selecciona Extremos del proxy > predeterminado (Proxy endpoints > default) en el panel de la izquierda.

    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.

  3. Haz clic en el botón + encima del panel Respuesta (Response).

    Botón para agregar un flujo condicional

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

    Botón para agregar un flujo condicional

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

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

    El flujo condicional que se muestra en los extremos del proxy.

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

    El flujo condicional que se muestra en los extremos del proxy.

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:

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

    Haz clic en el botón de signo más junto a Flow-1 en el panel Solicitud (Request).

  5. En el cuadro de diálogo Agregar paso de la política, haz clic en el campo Select existing policy y selecciona Quota-1.
  6. Haz clic en Agregar.

En el panel Solicitud (Request), ahora se muestra el flujo y la política adjunta Quota-1.

Panel de solicitud que muestra el flujo nuevo 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:

El flujo condicional y la política de cuotas que se muestran en 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.

Pestaña Desarrollar del proxy de proxy

Haz clic en en el extremo deseado.

Botón para agregar un flujo condicional

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.

En el nuevo panel de flujo condicional, el flujo se llama Flow-1 y están configurados el tipo de condición, la ruta y el verbo.

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

Flow-1 destacado

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.

En el menú Navegación, se destacó un flujo condicional de ejemplo llamado problema y, en el panel Flujo, se muestra el botón Paso.

En el panel Agregar paso, se crea una nueva instancia de política con la cuota del tipo de política y el nombre comercial Quota-2.

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: