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.