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.