переменная потока сообщений

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

Доступ к переменной потока message и ее свойствам зависит от точки в потоке прокси-сервера API, в которой к ней осуществляется доступ. Он доступен во всех контекстах, тогда как некоторые объекты, такие как request или response , недоступны.

Варианты использования

Основной вариант использования переменной потока message — это когда ваш прокси-сервер входит в поток ошибок: переменные потока request и response выходят за рамки области действия.

Например, в потоке ошибок объект response недоступен. Вы не сможете установить заголовки ответа для объекта response с помощью политики JavaScript , если вы находитесь в потоке ошибок. Вместо этого вы можете использовать одно из следующих действий:

Оба этих объекта доступны в потоке ошибок и могут использоваться для установки заголовков ответов из политики JavaScript или к ним можно получить доступ в других политиках, которые могут использовать переменные потока.

Вы можете использовать политику AssignMessage для назначения значений, например заголовков, объекту ответа . 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 доступно из всех контекстов.