Zmienne żądań i odpowiedzi

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

Gdy wysyłasz żądanie do serwera proxy interfejsu API, możesz przekazać dowolne lub wszystkie z tych informacji w zależności od konfiguracji serwera proxy interfejsu API:

  • Nagłówki żądania
  • Parametry zapytania
  • Dane formularzy
  • Ładunki XML lub JSON
  • Identyfikatory URI zasobów

Domyślnie wszystkie dane w żądaniu są przekazywane bez zmian z punktu ProxyEndpoint do docelowego punktu końcowego. Dlatego gdy docelowy punkt końcowy wysyła żądanie do serwera backendu, wszystkie informacje z pierwotnego żądania są przekazywane do usługi backendu.

To samo dotyczy odpowiedzi otrzymanej przez Edge z usługi backendu. Domyślnie wszystkie dane otrzymane w odpowiedzi są bez zmian przekazywane do aplikacji, która wysłała żądanie.

W jaki sposób dane żądań są przekazywane do serwera backendu?

Następująca ilustracja przedstawia definicję serwera proxy interfejsu API:

Żądanie od klienta HTTP przechodzące przez punkt końcowy serwera proxy do docelowego punktu końcowego w backendzie, aby dotrzeć do usługi HTTP. Podano przykłady punktu końcowego serwera proxy i docelowego punktu końcowego.

Dla tego serwera proxy interfejsu API:

  • Host wirtualny serwera proxy interfejsu API: „default”
  • Domena zdefiniowana przez hosta wirtualnego: „http://myOrg-prod.apigee.net”
  • Ścieżka bazowa serwera proxy: „/v1/pogoda”
  • Docelowy punkt końcowy określony przez regułę trasy: „default”
  • Docelowy adres URL: „http://Weather.yahooapis.com”

Aplikacja kliencka wysyła żądanie GET do serwera proxy interfejsu API za pomocą tego polecenia curl:

curl -X GET http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Zwróć uwagę, że to żądanie zawiera zasób „prognozy” i 1 parametr zapytania: w. Edge analizuje żądanie w sposób pokazany poniżej i przypisuje fragmenty żądania do zmiennych przepływu:

{request.verb} {proxy.basepath}/{proxy.pathsuffix}?{request.querystring}

Zmienne przepływu są ustawiane w tych wartościach:

  • request.verb: „POBIERZ”
  • proxy.basepath: "/v1/pogoda"
  • proxy.pathsuffix: "prognozy"
  • request.querystring: "w=12797282"

Następnie docelowy punkt końcowy wysyła żądanie do usługi backendu, wykorzystując informacje z żądania:

{request.verb} {target.basepath}/{proxy.pathsuffix}?{request.querystring}

Zwróć uwagę, że parametry zasobów i zapytań określone w żądaniu są automatycznie uwzględniane w żądaniu wysyłanym do serwera backendu. Zgodnie z definicją elementu TargetEndpoint żądanie ma postać:

curl -X GET http://weather.yahooapis.com/forecastrss?w=12797282

Podobnie jak w przypadku parametrów zapytania, wszelkie nagłówki i parametry formularza dołączone w żądaniu do serwera proxy interfejsu API są przekazywane do serwera backendu. Poniżej możesz na przykład wysłać żądanie zawierające nagłówek:

curl -X GET -H 'Content-type:application/xml' http://myOrg-prod.apigee.net/v1/weather/forecastrss?w=12797282

Możesz też poprosić o dodanie nagłówka i danych formularza w formularzu poniżej:

curl -X POST -H "Content-type:application/json" -d \
  '{"email" : "janetutorialxml@example.com",
    "firstName" : "Jane",
    "lastName" : "Tutorial",
    "userName" : "jtutorialxml"
  }' \
  http://myOrg-prod.apigee.net/v1/register/user

W obu przykładach nagłówki i dane formularza są przekazywane do usługi backendu w niezmienionej postaci. Nagłówki są reprezentowane przez zmienne przepływu, takie jak request.headers.count i request.headers.names. Dane formularza są reprezentowane przez zmienne przepływu, takie jak request.formparam.count i request.formparam.names.

Jak są zwracane dane odpowiedzi?

Domyślnie wszystkie dane otrzymane przez Edge z usługi backendu w odpowiedzi są bez zmian przekazywane do aplikacji, która wysłała żądanie. Jak opisano powyżej w przypadku żądania, dane zwrócone w odpowiedzi są dostępne za pomocą zmiennych przepływu w Edge. Więcej informacji znajdziesz w dokumentacji zmiennych przepływu.

Uzyskiwanie dostępu do danych żądań i odpowiedzi na serwerze proxy interfejsu API

Czasem może się zdarzyć, że konieczne będzie zmodyfikowanie danych żądania przed wysłaniem ich do serwera backendu. Na przykład:

  • Usunięcie informacji o zabezpieczeniach używanych przez Edge do weryfikowania żądań. Usługa backendu nie wymaga tych informacji.
  • Dodawanie danych wysyłanych do usługi backendu, na przykład w celu śledzenia użytkowników lub gromadzenia statystyk.
  • Warunkowe przetwarzanie żądania na podstawie danych z żądania. Na przykład serwer proxy interfejsu API może mieć wiele punktów docelowych TargetEndpoints. Punkt końcowy docelowy używany przez żądanie jest określany na podstawie danych żądania. Następnie musisz usunąć te dane z żądania, zanim wyślesz je do usługi backendu.

To samo dotyczy danych w odpowiedzi. Podczas przetwarzania odpowiedzi serwer proxy interfejsu API może zmodyfikować dane, zanim zwróci je do aplikacji żądającej.

Wiadomości z prośbami o dostęp

Za pomocą zasad możesz przeglądać i zmieniać fragmenty wiadomości z prośbą. Są to m.in.:

  • nagłówków,
  • Parametry zapytania
  • Parametry formularza
  • Źródłowy adres IP
  • Treść komunikatu HTTP

W normalnym przepływie, po przetworzeniu żądania, serwer proxy wysyła przekształcone żądanie do środowiska docelowego.

Zasady mogą analizować zmienne żądań, a następnie przekształcać lub odrzucać żądanie na podstawie zawartości tych zmiennych. Zasady przekształcają żądanie przez ustawienie odpowiednich zmiennych, na przykład zmiennych odpowiadających nagłówkom żądania.

Uzyskiwanie dostępu do wiadomości z odpowiedziami

Za pomocą zmiennych, które mają zastosowanie do wiadomości z odpowiedzią, zasady mogą uzyskiwać dostęp do komponentów wiadomości, w tym do nagłówka, parametrów zapytania i formularzy, źródłowego adresu IP, treści wiadomości HTTP itd.

Serwer proxy otrzymuje wiadomość z odpowiedzią, a następnie stosuje do niego serię zasad (na podstawie warunków ocenionych na podstawie odpowiedzi). Te zasady mogą modyfikować i przekształcać odpowiedź.

Zasady mogą analizować zmienne odpowiedzi, a następnie przekształcać lub odrzucać żądanie na podstawie zawartości tych zmiennych. Zasady przekształcają odpowiedź przez ustawianie odpowiednich zmiennych, na przykład zmiennych odpowiadających nagłówkom odpowiedzi.

Wspólne zasady dostępu do zmiennych przepływu

Edge definiuje kilka zasad, których możesz używać do przetwarzania danych żądań i odpowiedzi. Zasady te obejmują:

  • Zasada AssignMessage: tworzy lub modyfikuje żądania lub odpowiedzi HTTP podczas przepływu pracy serwera proxy interfejsu API. Tworzy i wypełnia także nowe zmienne przepływu.
  • Zasada wyodrębniania zmiennych: wyodrębnianie treści z wiadomości, w tym nagłówków, ścieżek URI, ładunków i parametrów zapytania, przeznaczonych do użycia w instrukcji warunku. Zasada stosuje następnie wzorzec tekstowy do treści wiadomości, a po znalezieniu dopasowania ustawia wyznaczoną zmienną.
  • Zasada JSONtoXML i zasada XMLtoJSON: konwertuje wiadomości z formatu JavaScript Object Notation (JSON) na format XML (obsługowy) i odwrotnie.
  • Zasada JavaCallout, Zasada JavaScript, Zasada PythonScript, RegularExpressionProtection: te zasady umożliwiają napisanie skryptu służącego do uzyskiwania dostępu do zmiennych przepływu zawierających dane żądań i odpowiedzi.