Variable de flujo de mensajes

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

El acceso a la variable de flujo message y sus propiedades depende del punto del flujo del proxy de API al que se accede. Está disponible en todos los contextos, mientras que algunos objetos, como request o response, no lo están.

Casos de uso

El caso práctico principal de la variable de flujo message cuando el proxy entra en el flujo de error: las variables de flujo request y response están fuera del alcance.

Por ejemplo, en el flujo de error, el objeto response no está disponible. No podrás establecer encabezados de respuesta en el objeto response con la política de JavaScript si estás en el flujo de error. En su lugar, puedes usar uno de los siguientes:

Ambos objetos están disponibles en el flujo de error y se pueden usar para establecer encabezados de respuesta desde una política de JavaScript o se puede acceder a ellos en otras políticas que pueden usar variables de flujo.

Puedes usar la política AssignMessage para asignar valores, como encabezados, al objeto de respuesta. AssingMessage automáticamente maneja el cambio en el contexto de flujo de solicitud/respuesta a flujo de error.

Otro caso de uso de la variable message consiste en registrar datos de respuesta en PostClientFlow con la política MessageLogging. Si usas el objeto message, puedes registrar sin interrupciones la información de respuesta según las condiciones de éxito y error del proxy.

Ejemplos

En un flujo de error, puedes configurar un encabezado de respuesta desde una política de JavaScript mediante error o message. Por ejemplo:

context.setVariable('error.header.FOO-1', 'error_header');

O

context.setVariable('message.header.FOO-2', 'message_header');

Sin embargo, la siguiente expresión no funcionará:

context.setVariable('response.header.FOO-3', 'response_header');

En este caso, la variable response está fuera del alcance del flujo de error. (Ten en cuenta que, en un seguimiento, esto se indica visualmente con las variables que se muestran con un signo igual con una barra diagonal).

A fin de establecer encabezados de respuesta para flujos de éxito y de error en una sola política, puedes usar message dentro de una política de JavaScript. Por ejemplo:

<faultrules>
  <faultrule name="invalid_key_rule">
    <step>
      <name>SetResponseHeaders</name>
    </step>
    <condition>(fault.name = "InvalidApiKey")</condition>
  </faultrule>
</faultrules>

En la política, el código como el siguiente establece el encabezado de error/respuesta en cualquier contexto del flujo:

context.setVariable('message.header.FOO-1', 'the header value');

Puedes volver a usar esta misma política en el flujo normal de ProxyResponse, que tendrá éxito porque message está disponible en todos los contextos.