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 a sus propiedades depende del punto del flujo del proxy de API en el que se acceda. Está disponible en todos los contextos, mientras que algunos objetos, como request
o response
, no lo están.
Casos prácticos
El principal caso de uso de la variable de flujo message
es cuando tu proxy entra en el flujo de errores: las variables de flujo request
y response
están fuera del ámbito.
Por ejemplo, en el flujo de errores, el objeto response
no está disponible. No podrás definir encabezados de respuesta en el objeto response
con la política de JavaScript si estás en el flujo de errores. En su lugar, puedes usar una de las siguientes opciones:
Ambos objetos están disponibles en el flujo de errores y se pueden usar para definir encabezados de respuesta desde una política de JavaScript o para acceder a ellos en otras políticas que puedan usar variables de flujo.
Puede usar la política AssignMessage para asignar valores, como encabezados, al objeto response. AssignMessage gestiona automáticamente el cambio de contexto del flujo de solicitud o respuesta al flujo de errores.
Otro caso práctico de la variable message
es registrar datos de respuesta en PostClientFlow con la política MessageLogging. Si usas el objeto message
, puedes registrar sin problemas la información de respuesta en el proxy cuando se cumplan las condiciones de éxito y de error.
Ejemplos
En un flujo de errores, puedes definir un encabezado de respuesta desde una política de JavaScript con error
o message
. Por ejemplo:
context.setVariable('error.header.FOO-1', 'error_header');
OR
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 ámbito en el flujo de errores. Ten en cuenta que, en un rastreo, esto se indica visualmente con variables que se muestran con un signo igual con una barra.
Para definir encabezados de respuesta para los flujos correctos y con errores en una sola política, puede usar message
en 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 define el encabezado de error o respuesta en cualquier contexto de flujo:
context.setVariable('message.header.FOO-1', 'the header value');
Puedes reutilizar esta misma política en el flujo normal ProxyResponse y se completará correctamente porque message
está disponible en todos los contextos.