Variável de fluxo de mensagens

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

O acesso à variável de fluxo message e as propriedades dela depende do ponto dentro do fluxo do proxy de API em que ela é acessada. Ela está disponível em todos os contextos, enquanto alguns objetos, como request ou response, não.

Casos de uso

O principal caso de uso da variável de fluxo message é quando o proxy entra no fluxo de erros: as variáveis de fluxo request e response estão fora do escopo.

Por exemplo, no fluxo de erro, o objeto response não está disponível. Não será possível definir cabeçalhos de resposta no objeto response com a política JavaScript se você estiver no fluxo de erros. Em vez disso, use uma das seguintes opções:

Esses dois objetos estão disponíveis no fluxo de erros e podem ser usados para definir cabeçalhos de resposta de uma política JavaScript ou serem acessados em outras políticas que podem usar variáveis de fluxo.

Use a política "AssignMessage" para atribuir valores, como cabeçalhos, ao objeto resposta. O recurso "Atribuir mensagem" lida automaticamente com a chave no contexto do fluxo de solicitação/resposta para o fluxo de erros.

Outro caso de uso da variável message é registrar dados de resposta no PostClientFlow com a política MessageLogging. Se você usar o objeto message, poderá registrar facilmente as informações de resposta seguindo as condições de sucesso e erro no proxy.

Exemplos

Em um fluxo de erros, é possível definir um cabeçalho de resposta de uma política JavaScript usando error ou message. Exemplo:

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

OU

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

No entanto, a expressão a seguir não funcionará:

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

Nesse caso, a variável response está fora do escopo no fluxo de erros. Observe que, em um trace, essa característica é indicada visualmente nas variáveis com um sinal de igual cortado por uma barra.

Para definir cabeçalhos de resposta para fluxos de sucesso e erros em uma política única, use message dentro de uma política JavaScript. Exemplo:

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

Na política, um código como o seguinte define o cabeçalho de erro/resposta em qualquer contexto de fluxo:

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

É possível reutilizar essa mesma política no fluxo de ProxyResponse normal e ela será bem-sucedida porque o message está disponível em todos os contextos.