Zuordnen von Vorlagentransformationen für REST APIs in API Gateway - Amazon API Gateway

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zuordnen von Vorlagentransformationen für REST APIs in API Gateway

Eine Transformation mit Zuweisungsvorlagen verwendet eine Zuweisungsvorlage, um Ihre Integrationsanforderung oder Integrationsantwort zu ändern. Eine Mapping-Vorlage ist ein in Velocity Template Language (VTL) ausgedrücktes Skript, das anhand JSONPath des Headers auf eine Payload angewendet wird. Content-type Sie verwenden Zuweisungsvorlagen, wenn Sie Transformationen mit Zuweisungsvorlagen einsetzen. In diesem Abschnitt werden konzeptionelle Informationen zu Zuweisungsvorlagen beschrieben.

Das folgende Diagramm zeigt den Anforderungslebenszyklus für eine POST /pets Ressource, die über eine Integration mit einem Integrationsendpunkt PetStore verfügt. In dieser API senden Benutzer Daten zu einem Haustier, und der Integrationsendpunkt gibt die mit dem Haustier verbundene Adoptionsgebühr zurück. In diesem Anfragelebenszyklus filtern Transformationen mit Zuweisungsvorlagen den Anfragebody zum Integrationsendpunkt und den Antwortbody vom Integrationsendpunkt.

Beispiel eines Anfragelebenszyklus

Die folgenden Abschnitte erläutern den Lebenszyklus von Anfrage und Antwort.

Methodenanforderung und Integrationsanforderung

Im vorherigen Beispiel gilt: Wenn dies der Anforderungs-Body ist, der an die Methodenanforderung gesendet wird:

POST /pets HTTP/1.1 Host:abcd1234.us-west-2.amazonaws.com Content-type: application/json { "id": 1, "type": "dog", "Age": 11, }

Dieser Body der Anfrage liegt nicht im richtigen Format vor, um vom Integrationsendpunkt verwendet zu werden. Daher führt API Gateway eine Zuweisungsvorlagen-Transformation durch. API Gateway führt diese Transformation nur aus, weil eine Zuweisungsvorlage für den Inhaltstyp application/json definiert ist. Wenn Sie keine Zuweisungsvorlage für den Inhaltstyp definieren, leitet API Gateway den Body standardmäßig über die Integrationsanforderung an den Integrationsendpunkt weiter. Informationen zum Ändern dieses Verhaltens finden Sie unter Verhalten bei Methodenanfragen für Payloads ohne Zuordnungsvorlagen für REST APIs in API Gateway.

Die folgende Zuweisungsvorlage transformiert die Daten der Methodenanforderung in der Integrationsanforderung, bevor sie an den Integrationsendpunkt gesendet werden:

#set($inputRoot = $input.path('$')) { "dogId" : "dog_"$elem.id, "Age": $inputRoot.Age }
  1. Die Variable $inputRoot stellt in den ursprünglichen JSON-Daten aus dem vorherigen Abschnitt das Stammobjekt dar. Richtlinien beginnen mit dem #-Symbol.

  2. dog ist eine Verkettung der id des Benutzers und einer Zeichenfolge.

  3. Age stammt aus dem Body der Methodenanforderung.

Anschließend wird die folgende Ausgabe an den Integrationsendpunkt weitergeleitet:

{ "dogId" : "dog_1", "Age": 11 }

Integrationsantwort und Methodenantwort

Nach einer erfolgreichen Anfrage an den Integrationsendpunkt sendet der Endpunkt eine Antwort an die Integrationsantwort von API Gateway. Im Folgenden sehen Sie die Beispieldaten, die vom Integrationsendpunkt zurückgegeben werden:

{ "dogId" : "dog_1", "adoptionFee": 19.95, }

Die Methodenantwort erwartet andere Nutzdaten als die, die von der Integrationsantwort zurückgegeben werden. Daher führt API Gateway eine Transformation mit Zuweisungsvorlagen aus. API Gateway führt diese Transformation nur aus, weil eine Zuweisungsvorlage für den Inhaltstyp application/json definiert ist. Wenn Sie keine Zuweisungsvorlage für den Inhaltstyp definieren, leitet API Gateway den Body standardmäßig über die Integrationsantwort an die Methodenantwort weiter. Informationen zum Ändern dieses Verhaltens finden Sie unter Verhalten bei Methodenanfragen für Payloads ohne Zuordnungsvorlagen für REST APIs in API Gateway.

#set($inputRoot = $input.path('$')) { "adoptionFee" : $inputRoot.adoptionFee, }

Die folgende Ausgabe wird an die Methodenantwort gesendet:

{"adoptionFee": 19.95}

Damit ist das Beispiel zur Transformation mit Zuweisungsvorlagen abgeschlossen. Wir empfehlen, wann immer möglich, statt Transformationen mit Zuweisungsvorlagen eine Proxy-Integration zu verwenden, um Ihre Daten zu transformieren. Weitere Informationen finden Sie unter Auswählen eines API Gateway-API-Integration.