zmienna przepływu wiadomości

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Dostęp do zmiennej przepływu message i jej właściwości zależy od miejsca w przepływie proxy interfejsu API, w którym następuje dostęp. Jest ona dostępna we wszystkich kontekstach, w przeciwieństwie do niektórych obiektów, takich jak request czy response.

Przypadki użycia

Główny przypadek użycia zmiennej przepływu message to sytuacja, gdy proxy przechodzi do przepływu błędów: zmienne przepływu request i response są poza zakresem.

Na przykład w przepływie błędów obiekt response jest niedostępny. Jeśli jesteś w przepływie błędów, nie możesz ustawić nagłówków odpowiedzi w obiekcie response za pomocą zasady JavaScript. Zamiast tego możesz użyć jednej z tych opcji:

Oba te obiekty są dostępne w przepływie błędów i można ich używać do ustawiania nagłówków odpowiedzi w ramach zasady JavaScript lub uzyskiwania do nich dostępu w innych zasadach, które mogą używać zmiennych przepływu.

Za pomocą zasady AssignMessage możesz przypisywać wartości, np. nagłówki, do obiektu response. Zasada AssignMessage automatycznie obsługuje przełączanie kontekstu z przepływu żądania/odpowiedzi na przepływ błędów.

Innym przypadkiem użycia zmiennej message jest rejestrowanie danych odpowiedzi w PostClientFlow za pomocą zasady MessageLogging policy. Jeśli używasz obiektu message, możesz bezproblemowo rejestrować informacje o odpowiedzi w przypadku powodzenia i błędów w proxy.

Przykłady

W przepływie błędów możesz ustawić nagłówek odpowiedzi z zasady JavaScript za pomocą error lub message. Na przykład:

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

LUB

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

To wyrażenie nie będzie działać:

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

W tym przypadku zmienna response jest poza zakresem w przepływie błędów. (Pamiętaj, że w śledzeniu jest to wizualnie wskazywane przez zmienne wyświetlane ze znakiem równości z przekreśleniem).

Aby ustawić nagłówki odpowiedzi zarówno w przypadku powodzenia, jak i błędów w ramach jednej zasady, możesz użyć message w zasadzie JavaScript. Na przykład:

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

W zasadzie kod taki jak ten ustawia nagłówek błędu/odpowiedzi w dowolnym kontekście przepływu:

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

Możesz ponownie użyć tej samej zasady w normalnym przepływie ProxyResponse. Będzie ona działać, ponieważ message jest dostępna we wszystkich kontekstach.