Cette page s'applique à Apigee et à Apigee hybrid.
Consultez la documentation d'Apigee Edge.
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.