Variable de flux de messages

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

L'accès à la variable de flux message et à ses propriétés dépend du point dans le flux de proxy d'API auquel il est accessible. Elle est disponible dans tous les contextes, contrairement à certains objets, tels que request ou response.

Cas d'utilisation

Le cas d'utilisation principal de la variable de flux message correspond au moment où votre proxy entre dans le flux d'erreurs : les variables de flux request et response sont hors champ d'application.

Par exemple, dans le flux d'erreurs, l'objet response n'est pas disponible. Si vous êtes dans le flux d'erreurs, vous ne pourrez pas définir d'en-têtes de réponse sur l'objet response avec la règle JavaScript. Vous pouvez utiliser l'une des méthodes suivantes :

Ces deux objets sont disponibles dans le flux d'erreur et peuvent être utilisés pour définir des en-têtes de réponse à partir d'une règle JavaScript. Ils sont également accessibles dans d'autres règles pouvant utiliser des variables de flux.

Vous pouvez utiliser la règle AssignMessage pour attribuer des valeurs à l'objet response, telles que des en-têtes. La règle d'attribution d'un message gère automatiquement le passage en contexte du flux de requête/réponse au flux d'erreur.

Un autre cas d'utilisation de la variable message consiste à consigner les données de réponse dans PostClientFlow avec la règle MessageLogging. Si vous utilisez l'objet message, vous pouvez facilement consigner les informations de réponse en suivant les conditions de réussite et d'erreur dans le proxy.

Exemples

Dans un flux d'erreur, vous pouvez définir un en-tête de réponse à partir d'un règle JavaScript via error ou message. Exemple :

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

OR

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

Toutefois, l'expression suivante ne fonctionnera pas :

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

Dans ce cas, la variable response n'est pas incluse dans le flux d'erreurs. (Notez que dans une trace, ceci est indiqué par des variables affichées avec un signe égal traversé d'une barre oblique.)

Pour définir des en-têtes de réponse pour les flux de réussite et d'erreur dans une seule règle, vous pouvez utiliser message dans une règle JavaScript. Exemple :

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

Dans la règle, le code suivant définit l'en-tête d'erreur/réponse dans n'importe quel contexte de flux :

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

Vous pouvez réutiliser cette même règle sur le flux ProxyResponse normal. L'opération réussira car message est disponible dans tous les contextes.