Configura flujos

Estás viendo la documentación de Apigee Edge.
Ve a la documentación de Apigee X.
info

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 Descripción general de las variables de flujo y Condiciones con variables de flujo.

Conecta políticas a los flujos

Edge incluye 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 el procesamiento de mensajes por completo.

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 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 learn en la solicitud, se generará 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 una solicitud GET ingresa en el proxy de API con un patrón de URI de .../issue/** (/issue/ con cualquier elemento en el URI después de la última barra diagonal), la cuota se aplica a 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 verdadera.

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

  • 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 recibe referencias con nombre que contienen información de estado asociada con una transacción de API que procesa Edge. Edge define muchas variables de estado a las que puedes hacer referencia.

Los servicios 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 mediante una llamada a tu API. Por ejemplo, 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.

Agrega un flujo condicional

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

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 el ícono + 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 Variables y condiciones del 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: