Variável de fluxo de mensagens

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

O acesso à variável de fluxo message e às respetivas propriedades depende do ponto no fluxo do proxy de API em que é acedido. Está disponível em todos os contextos, ao contrário de alguns objetos, como request ou response.

Exemplos de utilização

O principal exemplo de utilização da variável de fluxo message ocorre quando o proxy entra no fluxo de erros: as variáveis de fluxo request e response estão fora do âmbito.

Por exemplo, no fluxo de erros, o objeto response não está disponível. Não pode definir cabeçalhos de resposta no objeto response com a política de JavaScript se estiver no fluxo de erros. Em alternativa, pode usar uma das seguintes opções:

Ambos os objetos estão disponíveis no fluxo de erros e podem ser usados para definir cabeçalhos de respostas a partir de uma política de JavaScript ou ser acedidos noutras políticas que podem usar variáveis de fluxo.

Pode usar a política AssignMessage para atribuir valores, como cabeçalhos, ao objeto response. AssignMessage processa automaticamente a mudança no contexto do fluxo de pedido/resposta para o fluxo de erro.

Outro exemplo de utilização da variável message é registar dados de resposta no PostClientFlow com a política MessageLogging. Se usar o objeto message, pode registar facilmente informações de resposta após condições de êxito e de erro no proxy.

Exemplos

Num fluxo de erros, pode definir um cabeçalho da resposta a partir de uma política de JavaScript através de error ou message. Por exemplo:

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

OU

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

No entanto, a seguinte expressão não funciona:

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

Neste caso, a variável response está fora do âmbito no fluxo de erros. (Tenha em atenção que, num rastreio, isto é indicado visualmente por variáveis apresentadas com um sinal de igual com uma barra a atravessá-lo.)

Para definir cabeçalhos de resposta para fluxos de êxito e de erro numa única política, pode usar message numa política de JavaScript. Por exemplo:

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

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

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

Pode reutilizar esta mesma política no fluxo ProxyResponse normal e vai ter êxito porque message está disponível em todos os contextos.