Zmienne żądań i odpowiedzi

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

Gdy wysyłasz żądanie do proxy interfejsu API, możesz przekazać dowolne lub wszystkie z tych informacji, w zależności od konfiguracji 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 ProxyEndpoint do TargetEndpoint. Dlatego, gdy TargetEndpoint 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, która wysłała żądanie.

Jak dane żądania są przekazywane do serwera backendu ?

Na ilustracji poniżej przedstawiono definicję proxy interfejsu API:

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

W przypadku tego proxy interfejsu API:

  • Wirtualny host proxy interfejsu API: „default”
  • Domena zdefiniowana przez wirtualny host: „http://myOrg-prod.apigee.net”
  • Podstawowa ścieżka proxy: „/v1/weather”
  • TargetEndpoint określony przez regułę trasy: „default”
  • Docelowy adres URL: „http://weather.yahooapis.com”

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

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

Zwróć uwagę, że to żądanie zawiera zasób "forecastrss" 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 na te wartości:

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

Następnie TargetEndpoint wysyła żądanie do usługi backendu, korzystając z informacji z żądania:

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

Zwróć uwagę, że zasób i parametry zapytania określone w żądaniu są automatycznie uwzględniane w żądaniu do serwera backendu. Z definicji 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 proxy interfejsu API , są przekazywane do serwera backendu. Na przykład wysyłasz żądanie poniżej, które zawiera nagłówek:

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

Lub żądanie w postaci poniższej, aby uwzględnić nagłówek i dane formularza:

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 backendu. 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 zwracane są dane odpowiedzi?

Domyślnie wszystkie dane otrzymane przez Edge z usługi backendu w odpowiedzi są przekazywane bez zmian do aplikacji, która wysłała żądanie. 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 zmiennych przepływu. Zobacz Flow variables reference.

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

W wielu przypadkach przed wysłaniem danych żądania do serwera backendu trzeba je zmodyfikować. Na przykład:

  • Aby usunąć informacje o zabezpieczeniach używane przez Edge do weryfikowania żądań. Te informacje nie są wymagane przez usługę backendu.
  • Aby dodać dane wysyłane do usługi backendu, np. do śledzenia użytkowników lub zbierania danych analitycznych.
  • Aby warunkowo przetwarzać żądanie na podstawie danych żądania. Na przykład proxy interfejsu API może mieć kilka TargetEndpoints. TargetEndpoint używany przez żądanie jest określany przez dane żądania. Następnie usuwasz te dane z żądania przed wysłaniem go do usługi backendu.

To samo dotyczy danych w odpowiedzi. W ramach przetwarzania odpowiedzi proxy interfejsu API może chcieć zmodyfikować dane przed zwróceniem ich do aplikacji wysyłającej żądanie.

Dostęp do wiadomości żądania

Do uzyskiwania dostępu do części wiadomości żądania i ich zmieniania możesz używać zasad. Te części obejmują:

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

W normalnym przepływie po przetworzeniu żądania proxy wysyła przekształcone żądanie do celu.

Zasady mogą sprawdzać zmienne żądania, a następnie przekształcać lub odrzucać żądanie na podstawie zawartości tych zmiennych. Zasady przekształcają żądanie, ustawiając odpowiednie zmienne, np. zmienne odpowiadające nagłówkom żądania.

Dostęp do wiadomości odpowiedzi

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

Proxy otrzymuje wiadomość odpowiedzi, a następnie stosuje do niej serię zasad na podstawie warunków ocenianych w odpowiedzi, które mogą modyfikować lub przekształcać odpowiedź.

Zasady mogą sprawdzać zmienne odpowiedzi, a następnie przekształcać lub odrzucać żądanie na podstawie zawartości tych zmiennych. Zasady przekształcają odpowiedź, ustawiając odpowiednie zmienne, np. zmienne odpowiadające nagłówkom odpowiedzi.

Typowe zasady dostępu do zmiennych przepływu

Edge definiuje kilka zasad, których możesz używać do przetwarzania danych żądania i odpowiedzi. Te zasady obejmują:

  • Zasady AssignMessage: tworzą lub modyfikują wiadomości żądania lub odpowiedzi HTTP podczas przepływu proxy interfejsu API. Tworzą też nowe zmienne przepływu i wypełniają je.
  • Zasady ExtractVariables: wyodrębniają treści z wiadomości, w tym nagłówki, ścieżki URI, ładunki i parametry zapytania, do użycia w instrukcji warunkowej. Następnie zasady stosują wzorzec tekstowy do treści wiadomości i po znalezieniu dopasowania ustawiają wyznaczoną zmienną.
  • Zasady JSONtoXML i XMLtoJSON: konwertują wiadomości z formatu JSON (obiekt w JavaScripcie Notation) na format XML (Extensible Markup Language) lub odwrotnie.
  • Zasady JavaCallout, JavaScript, PythonScript, RegularExpressionProtection: te zasady umożliwiają napisanie skryptu, który uzyskuje dostęp do zmiennych przepływu zawierających dane żądania i odpowiedzi.