Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Доступ к переменной потока message и ее свойствам зависит от того, в какой точке потока прокси API осуществляется доступ. Он доступен во всех контекстах, в отличие от некоторых объектов, например request или response.
Примеры использования
Основной вариант использования переменной потока message – когда прокси-сервер переходит в поток ошибок: переменные потока request и response выходят за пределы области действия.
Например, в случае ошибки объект response недоступен. Если вы столкнулись с ошибкой, то не сможете задать заголовки ответа для объекта response с помощью правила JavaScript. Вместо этого вы можете использовать один из следующих вариантов:
Оба этих объекта доступны в потоке ошибок и могут использоваться для установки заголовков ответов в правилах JavaScript или для доступа к другим правилам, которые могут использовать переменные потока.
Вы можете использовать правило AssignMessage, чтобы присваивать объекту response значения, например заголовки. Функция Assign Message автоматически обрабатывает переход из потока запроса/ответа в поток ошибок.
Ещё один вариант использования переменной message – регистрация данных ответа в PostClientFlow с помощью правила MessageLogging. Если вы используете объект message, то можете без проблем регистрировать информацию об ответе при успешном выполнении и при ошибке в прокси-сервере.
Примеры
В потоке ошибок можно задать заголовок ответа из правила JavaScript, используя error или message. Пример:
context.setVariable('error.header.FOO-1', 'error_header');ИЛИ
context.setVariable('message.header.FOO-2', 'message_header');Однако следующее выражение не будет работать:
context.setVariable('response.header.FOO-3', 'response_header');В этом случае переменная response находится вне области действия в потоке ошибок. (В трассировке это обозначается переменными, показанными со знаком равенства, перечеркнутым косой чертой.)
Чтобы задать заголовки ответов для успешных и ошибочных потоков в одном правиле, можно использовать message в правиле JavaScript. Пример:
<faultrules>
<faultrule name="invalid_key_rule">
<step>
<name>SetResponseHeaders</name>
</step>
<condition>(fault.name = "InvalidApiKey")</condition>
</faultrule>
</faultrules>В правиле код, подобный приведенному ниже, задает заголовок ошибки/ответа в любом контексте потока:
context.setVariable('message.header.FOO-1', 'the header value');Вы можете использовать это правило в обычном потоке ProxyResponse, и оно будет выполнено успешно, поскольку message доступен во всех контекстах.