Configura flujos

Estás viendo la documentación de Apigee X.
Consulta la documentación de Apigee Edge.

Los flujos son los componentes básicos de los proxies de API. Los flujos te permiten programar el comportamiento de una API, ya que te permiten configurar la secuencia en la que un proxy de API ejecuta las políticas y el código.

Para obtener una descripción general conceptual de los flujos, consulta Controla cómo se ejecuta un proxy con flujos.

En este tema, se describe cómo crear flujos condicionales y agregar lógica (políticas) a los flujos en un nivel alto. El arte de crear condiciones implica más detalles de los que se tratan en este tema. Para obtener más detalles, consulta Usa variables de flujo y Condiciones con variables de flujo.

Conecta políticas a los flujos

Apigee viene con muchos tipos diferentes de políticas predefinidas para implementar seguridad, administrar el tráfico y manipular mensajes. Además, las políticas te permiten agregar tu propio código personalizado para personalizar por completo el procesamiento de mensajes.

Por ejemplo:

  • Adjunta una política de seguridad de OAuth a la solicitud de PreFlow del ProxyEndpoint. Debido a que el PreFlow de la solicitud de ProxyEndpoint es el primer flujo de la canalización, puedes rechazar una solicitud de inmediato si infringe tus políticas de seguridad.
  • Adjunta una política de conversión de JSON a XML a la respuesta PostFlow de TargetEndpoint para convertir una respuesta de JSON a XML
  • Adjunta una política de JavaScript a un flujo condicional del ProxyEndpoint para ejecutar el código JavaScript a fin de procesar la solicitud

Una vez que hayas creado un flujo condicional, estará disponible para el adjunto de política. Con el flujo seleccionado, haz clic en el ícono + Paso 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 se vincula la política al flujo seleccionado, se configura el proxy de la API para que se aplique la política de cuota solo a las solicitudes realizadas a ese URI de flujo y combinación de verbo. Por ejemplo, si adjuntas la política al flujo learn en la solicitud, se genera el siguiente XML en la vista de código del editor de proxy:

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

Información sobre los flujos condicionales

Las políticas adjuntas a PreFlow o PostFlow siempre se ejecutan. Sin embargo, las políticas en un flujo condicional se ejecutan solo si la condición del flujo se evalúa como true.

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. Esto significa que puedes ejecutar un flujo condicional como parte de cada uno de los siguientes elementos:

  • Canalización de solicitudes de ProxyEndpoint
  • Canalización de solicitudes de TargetEndpoint
  • Canalización de respuestas de ProxyEndpoint
  • Canalización de respuestas de TargetEndpoint

Video: Mira este video breve para obtener más información sobre los flujos condicionales.

Por ejemplo, la siguiente definición de ProxyEndpoint 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 variable de flujo request.verb. Una variable de flujo se denomina referencias con estados que contienen información de estado asociada con una transacción de API procesada por Apigee. Apigee define muchas variables de estado a las que puedes hacer referencia.

Los servicios de RESTful son colecciones de recursos de API. Un recurso de API es un fragmento de ruta de URI que identifica algunas entidades a las que los desarrolladores pueden acceder llamando a tu API. Por ejemplo, si el backend del servicio proporciona informes meteorológicos y pronósticos meteorológicos, tu API podría definir dos flujos condicionales que se asignan 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.

Luego, los desarrolladores de aplicaciones acceden a los recursos mediante solicitudes a una URL en el formulario:

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.

Agrega un flujo condicional

En este ejemplo breve, configuras un flujo que se ejecuta solo cuando el mensaje de solicitud es un GET HTTP.

Para agregar un flujo condicional, selecciona la pestaña Desarrollar en el compilador del 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>

Próximos pasos

En los siguientes temas, se proporcionan más detalles sobre cómo crear condiciones y usar variables: