Zuordnungsvorlagen für REST APIs - APIAmazon-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.

Zuordnungsvorlagen für REST APIs

In API Gateway kann eine API Methodenanfrage oder -antwort eine Nutzlast in einem anderen Format annehmen als die Integrationsanfrage oder -antwort.

Sie können Ihre Daten folgendermaßen transformieren:

  • Ordnet die Nutzlast einem von API -angegebenen Format zu.

  • Überschreibt API die Anforderungs- und Antwortparameter und Statuscodes eines Benutzers.

  • Rückgabe der vom Client ausgewählten Antwort-Header

  • Ordnen Sie Pfadparameter, Abfragezeichenfolge-Parameter oder Header-Parameter in der Methodenanforderung eines HTTP Proxys oder AWS -Service Proxys zu.

  • Wählen Sie aus, welche Daten mithilfe der Integration gesendet werden sollen AWS -Services, z. B. mit Amazon DynamoDB- oder Lambda-Funktionen oder Endpunkten. HTTP

Sie können Zuweisungsvorlagen verwenden, um Ihre Daten zu transformieren. Eine Mapping-Vorlage ist ein in Velocity Template Language (VTL) ausgedrücktes Skript, das mithilfe von auf die Payload angewendet wird. JSONPath

In diesem Abschnitt werden konzeptionelle Informationen zu Mapping-Vorlagen beschrieben. Anweisungen zum Erstellen einer Zuordnungsvorlage für ein API Gateway REST API finden Sie unterRichten Sie Datentransformationen in API Gateway ein.

Beispiel für eine Zuordnungsvorlage

Das folgende Beispiel zeigt Eingabedaten für eine Integrationsanfrage.

[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]

Das folgende Beispiel ist eine Zuordnungsvorlage zur Transformation der Integrationsanforderungsdaten.

#set($inputRoot = $input.path('$')) [ #foreach($elem in $inputRoot) { "description" : "Item $elem.id is a $elem.type.", "askingPrice" : $elem.price }#if($foreach.hasNext),#end #end ]

Das folgende Beispiel enthält Ausgabedaten aus der Transformation.

[ { "description" : "Item 1 is a dog.", "askingPrice" : 249.99 }, { "description" : "Item 2 is a cat.", "askingPrice" : 124.99 }, { "description" : "Item 3 is a fish.", "askingPrice" : 0.99 } ]

Das folgende Diagramm zeigt Details dieser Zuweisungsvorlage.

Beispiel für eine Mapping-Vorlage
  1. Die $inputRoot Variable stellt das Stammobjekt in den JSON Originaldaten aus dem vorherigen Abschnitt dar. Richtlinien beginnen mit dem #-Symbol.

  2. Eine foreach Schleife durchläuft jedes Objekt in den JSON Originaldaten.

  3. Die Beschreibung ist eine Verkettung der Daten von Pet id und den Originaldatentype. JSON

  4. askingPricepriceist der Preis aus den Originaldaten. JSON

1 #set($inputRoot = $input.path('$')) 2 [ 3 #foreach($elem in $inputRoot) 4 { 5 "description" : "Item $elem.id is a $elem.type.", 6 "askingPrice" : $elem.price 7 }#if($foreach.hasNext),#end 8 #end 9 ]

In dieser Zuweisungsvorlage gilt:

  1. In Zeile 1 steht die $inputRoot Variable für das Stammobjekt in den JSON Originaldaten aus dem vorherigen Abschnitt. Richtlinien beginnen mit dem #-Symbol.

  2. In Zeile 3 durchläuft eine foreach Schleife jedes Objekt in den JSON Originaldaten.

  3. In Zeile 5 description ist das eine Verkettung der Daten von Pet id und type aus den Originaldaten. JSON

  4. In Zeile 6 askingPrice price steht der Preis aus den Originaldaten. JSON

Weitere Informationen zur Velocity Template Language finden Sie unter Apache Velocity — VTL Reference. Weitere Informationen zu JSONPath finden Sie unter JSONPath- XPath for JSON.

Die Zuordnungsvorlage geht davon aus, dass es sich bei den zugrunde liegenden Daten um ein JSON Objekt handelt. Es ist nicht erforderlich, ein Modell für die Daten zu definieren. Ein Modell für die Ausgabedaten ermöglicht es jedoch, vorherige Daten als sprachspezifisches Objekt zurückzugeben. Weitere Informationen finden Sie unter Datenmodelle für REST APIs.

Beispiele für komplexe Mapping-Vorlagen

Sie können auch kompliziertere Zuordnungsvorlagen erstellen. Das folgende Beispiel zeigt die Verkettung von Referenzen und einen Grenzwert von 100, um festzustellen, ob Sie sich ein Haustier leisten können.

Das folgende Beispiel zeigt Eingabedaten für eine Integrationsanfrage.

[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]

Das folgende Beispiel ist eine Zuordnungsvorlage zur Transformation der Integrationsanforderungsdaten.

#set($inputRoot = $input.path('$')) #set($cheap = 100) [ #foreach($elem in $inputRoot) { #set($name = "${elem.type}number$elem.id") "name" : $name, "description" : "Item $elem.id is a $elem.type.", #if($elem.price > $cheap )#set ($afford = 'too much!') #{else}#set ($afford = $elem.price)#end "askingPrice" : $afford }#if($foreach.hasNext),#end #end ]

Das folgende Beispiel enthält Ausgabedaten aus der Transformation.

[ { "name" : dognumber1, "description" : "Item 1 is a dog.", "askingPrice" : too much! }, { "name" : catnumber2, "description" : "Item 2 is a cat.", "askingPrice" : too much! }, { "name" : fishnumber3, "description" : "Item 3 is a fish.", "askingPrice" : 0.99 } ]

Sie können sich auch kompliziertere Datenmodelle ansehen. Siehe Beispieldatenmodelle und Zuordnungsvorlagen für API Gateway.