Zmienne żądań i odpowiedzi

Wyświetlasz dokumentację Apigee Edge.
Zapoznaj się z dokumentacją Apigee X.
Informacje

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

  • 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 ProxyEndpoint do TargetEndpoint. Dlatego gdy punkt końcowy docelowy 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ą przekazywane bez zmian do aplikacji, z której pochodzi żądanie.

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

Definicja proxy interfejsu API wygląda tak:

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

Dla tego serwera proxy interfejsu API:

  • Wirtualny host proxy interfejsu API: „default”
  • Domena zdefiniowana przez hosta wirtualnego: „http://myOrg-prod.apigee.net”.
  • Ścieżka podstawowa serwera proxy: „/v1/weather”
  • Wartość TargetEndpoint określona przez regułę routingu: „default” (domyślna).
  • Docelowy adres URL: „http://Weather.yahooapis.com”

Aplikacja klienta 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 części żądania do zmiennych przepływu:

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

Zmienne przepływu są ustawiane z tymi wartościami:

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

Usługa TargetEndpoint wysyła następnie żądanie do usługi backendowej, używając informacji z żądania:

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

Zwróć uwagę, że parametry zasobów i zapytania określone w żądaniu są automatycznie uwzględniane w żądaniu wysyłanym do serwera backendu. Z definicji punktu końcowego TargetEndpoint żądanie ma postać:

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

Podobnie jak parametry zapytania, wszystkie nagłówki lub parametry formularza, które uwzględnisz w żądaniu do serwera proxy API, są przekazywane do serwera backendu. Na przykład wysyłasz żądanie z nagłówkiem:

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

Możesz też przesłać prośbę o uwzględnienie nagłówka i danych formularza za pomocą formularza 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 bez zmian do usługi backendowej. Nagłówki są reprezentowane przez zmienne przepływu, takie jak request.headers.countrequest.headers.names. Dane formularza są reprezentowane przez zmienne przepływu, takie jak request.formparam.countrequest.formparam.names.

Jak zwracane są dane odpowiedzi?

Domyślnie wszystkie dane odebrane przez Edge z usługi backendu w odpowiedzi są przekazywane bez zmian do aplikacji będącej źródłem żądania. Jak opisano powyżej w przypadku żądania, dane zwracane w odpowiedzi są dostępne za pomocą zmiennych przepływu w Edge. Więcej informacji znajdziesz w dokumentacji dotyczącej zmiennych przepływu.

Dostęp do danych żądań i odpowiedzi w proxy interfejsu API

Często trzeba zmodyfikować dane żądania przed wysłaniem ich na serwer. Na przykład:

  • Aby usunąć informacje zabezpieczające używane przez Edge do sprawdzania żądań. Te informacje nie są wymagane przez usługę backendu.
  • Dodawanie danych przesyłanych do usługi backendowej, na przykład w celu śledzenia użytkowników lub zbierania statystyk.
  • Warunkowe przetwarzanie żądania na podstawie danych żądania. Na przykład serwer pośredniczący interfejsu API może mieć wiele wartości w polu TargetEndpoints. Punkt końcowy docelowy używany przez żądanie jest określany przez dane żądania. Następnie usuwasz te dane z żądania przed wysłaniem ich do usługi backendu.

To samo dotyczy danych w odpowiedzi. W ramach przetwarzania odpowiedzi serwer pośredniczący interfejsu API może zmodyfikować dane, zanim zwróci je do aplikacji przesyłającej żądanie.

Wiadomości z prośbą o dostęp

Za pomocą zasad możesz wyświetlać fragmenty wiadomości z prośbą i je zmieniać. Te części to:

  • Nagłówki
  • Parametry zapytania
  • Parametry formularza
  • Źródłowy adres IP
  • Treść wiadomości HTTP

W ramach normalnego procesu, gdy żądanie zostanie przetworzone, serwer proxy wysyła je do celu.

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

Dostęp do wiadomości z odpowiedziami

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

Serwer pośredniczący odbiera wiadomość z odpowiedzią, a następnie stosuje do niej serię zasad na podstawie warunków ocenianych na podstawie odpowiedzi, które mogą ją zmodyfikować lub przekształcić.

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

Typowe zasady dostępu do zmiennych przepływu

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