Variabile di flusso message

Questa pagina si applica ad Apigee e Apigee hybrid.

Visualizza la documentazione di Apigee Edge.

L'accesso alla variabile di flusso message e alle relative proprietà dipende dal punto del flusso del proxy API in cui viene eseguito l'accesso. È disponibile in tutti i contesti, mentre alcuni oggetti, come request o response, non lo sono.

Casi d'uso

Il caso d'uso principale per la variabile di flusso message si verifica quando il proxy entra nel flusso di errori: le variabili di flusso request e response non rientrano nell'ambito.

Ad esempio, nel flusso di errori, l'oggetto response non è disponibile. Non potrai impostare le intestazioni della risposta sull'oggetto response con il criterio JavaScript se ti trovi nel flusso di errori. In alternativa, puoi utilizzare uno dei seguenti metodi:

Entrambi questi oggetti sono disponibili nel flusso di errori e possono essere utilizzati per impostare le intestazioni della risposta all'interno di un criterio JavaScript o per accedervi in altri criteri che possono utilizzare le variabili di flusso.

Puoi utilizzare il criterio AssignMessage per assegnare valori, ad esempio intestazioni, all'oggetto response. AssignMessage gestisce automaticamente il cambio di contesto dal flusso richiesta/risposta al flusso di errori.

Un altro caso d'uso per la variabile message è la registrazione dei dati di risposta in PostClientFlow con il criterio MessageLogging. Se utilizzi l'oggetto message, puoi registrare senza problemi le informazioni sulla risposta in base alle condizioni di successo e di errore nel proxy.

Esempi

In un flusso di errori, puoi impostare un'intestazione della risposta da un criterio JavaScript utilizzando error o message. Ad esempio:

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

OR

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

La seguente espressione, tuttavia, non funzionerà:

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

In questo caso, la variabile response non rientra nell'ambito del flusso di errori. Tieni presente che in una traccia questo è indicato visivamente da variabili mostrate con un segno di uguale con una barra che lo attraversa.

Per impostare le intestazioni di risposta per i flussi di successo e di errore in un'unica norma, puoi utilizzare message all'interno di una norma JavaScript. Ad esempio:

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

Nella policy, un codice come il seguente imposta l'intestazione di errore/risposta in qualsiasi contesto di flusso:

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

Puoi riutilizzare questa stessa policy nel normale flusso ProxyResponse e l'operazione andrà a buon fine perché message è disponibile in tutti i contesti.