Beispieldatenmodelle und Zuordnungsvorlagen für API Gateway - 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.

Beispieldatenmodelle und Zuordnungsvorlagen für API Gateway

Die folgenden Abschnitte enthalten Beispiele für Modelle und Zuordnungsvorlagen, die als Ausgangspunkt für Ihre eigenen Modelle APIs in API Gateway verwendet werden können. Weitere Informationen zu Datentransformationen finden Sie unter Zuordnungsvorlagen für REST APIs. Weitere Informationen zu Datenmodellen finden Sie unterDatenmodelle für REST APIs.

Beispiel für ein Fotoalbum

Das folgende Beispiel zeigt ein Fotoalbum API in API Gateway. Wir bieten ein Beispiel für die Datentransformation, zusätzliche Modelle und Zuweisungsvorlagen.

Beispiel für eine Datentransformation

Das folgende Beispiel zeigt, wie Sie Eingabedaten zu Fotos mithilfe einer Velocity Template Language (VTL) -Mapping-Vorlage transformieren können. Weitere Informationen zur Velocity Template Language finden Sie unter Apache Velocity — VTL Reference.

Das folgende Beispiel zeigt Eingabedaten für eine Integrationsanfrage.

{ "photos": { "page": 1, "pages": "1234", "perpage": 100, "total": "123398", "photo": [ { "id": "12345678901", "owner": "23456789@A12", "photographer_first_name" : "Saanvi", "photographer_last_name" : "Sarkar", "secret": "abc123d456", "server": "1234", "farm": 1, "title": "Sample photo 1", "ispublic": true, "isfriend": false, "isfamily": false }, { "id": "23456789012", "owner": "34567890@B23", "photographer_first_name" : "Richard", "photographer_last_name" : "Roe", "secret": "bcd234e567", "server": "2345", "farm": 2, "title": "Sample photo 2", "ispublic": true, "isfriend": false, "isfamily": false } ] } }

Das folgende Beispiel ist eine Mapping-Vorlage zur Transformation der Fotodaten.

#set($inputRoot = $input.path('$')) { "photos": [ #foreach($elem in $inputRoot.photos.photo) { "id": "$elem.id", "photographedBy": "$elem.photographer_first_name $elem.photographer_last_name", "title": "$elem.title", "ispublic": $elem.ispublic, "isfriend": $elem.isfriend, "isfamily": $elem.isfamily }#if($foreach.hasNext),#end #end ] }

Das folgende Beispiel zeigt Ausgabedaten aus der Transformation.

{ "photos": [ { "id": "12345678901", "photographedBy": "Saanvi Sarkar", "title": "Sample photo 1", "ispublic": true, "isfriend": false, "isfamily": false }, { "id": "23456789012", "photographedBy": "Richard Roe", "title": "Sample photo 2", "ispublic": true, "isfriend": false, "isfamily": false } ] }

Eingabemodell für Fotodaten

Sie können ein Modell für Ihre Eingabedaten definieren. Dieses Eingabemodell erfordert, dass Sie ein Foto hochladen, und es spezifiziert mindestens 10 Fotos für jede Seite. Sie können dieses Eingabemodell verwenden, um eine Anforderungsvalidierung für Ihre zu generieren SDK oder zu aktivierenAPI.

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PhotosInputModel", "type": "object", "properties": { "photos": { "type": "object", "required" : [ "photo" ], "properties": { "page": { "type": "integer" }, "pages": { "type": "string" }, "perpage": { "type": "integer", "minimum" : 10 }, "total": { "type": "string" }, "photo": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "owner": { "type": "string" }, "photographer_first_name" : {"type" : "string"}, "photographer_last_name" : {"type" : "string"}, "secret": { "type": "string" }, "server": { "type": "string" }, "farm": { "type": "integer" }, "title": { "type": "string" }, "ispublic": { "type": "boolean" }, "isfriend": { "type": "boolean" }, "isfamily": { "type": "boolean" } } } } } } } }

Ausgabemodell für Fotodaten

Sie können ein Modell für Ihre Ausgabedaten definieren. Sie können dieses Modell für ein Methodenantwortmodell verwenden, das erforderlich ist, wenn Sie ein stark typisiertes Modell SDK für die API generieren. Dies stellt sicher, dass die Ausgabe an eine geeignete Klasse in Java oder Objective-C übergeben wird.

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PhotosOutputModel", "type": "object", "properties": { "photos": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "photographedBy": { "type": "string" }, "title": { "type": "string" }, "ispublic": { "type": "boolean" }, "isfriend": { "type": "boolean" }, "isfamily": { "type": "boolean" } } } } } }

Eingabe-Zuweisungsvorlage für Fotodaten

Sie können eine Zuweisungsvorlage definieren, um Eingabedaten zu ändern. Sie können Eingabedaten für weitere Funktionsintegrationen oder Integrationsantworten ändern.

#set($inputRoot = $input.path('$')) { "photos": { "page": $inputRoot.photos.page, "pages": "$inputRoot.photos.pages", "perpage": $inputRoot.photos.perpage, "total": "$inputRoot.photos.total", "photo": [ #foreach($elem in $inputRoot.photos.photo) { "id": "$elem.id", "owner": "$elem.owner", "photographer_first_name" : "$elem.photographer_first_name", "photographer_last_name" : "$elem.photographer_last_name", "secret": "$elem.secret", "server": "$elem.server", "farm": $elem.farm, "title": "$elem.title", "ispublic": $elem.ispublic, "isfriend": $elem.isfriend, "isfamily": $elem.isfamily }#if($foreach.hasNext),#end #end ] } }

Beispiel für Nachrichtenartikel

Das folgende Beispiel zeigt einen Nachrichtenartikel API in API Gateway. Wir bieten ein Beispiel für die Datentransformation, zusätzliche Modelle und Zuweisungsvorlagen.

Beispiel für eine Datentransformation

Das folgende Beispiel zeigt, wie Sie Eingabedaten zu einem Nachrichtenartikel mithilfe einer Velocity Template Language (VTL) -Mapping-Vorlage transformieren können. Weitere Informationen zur Velocity Template Language finden Sie unter Apache Velocity — VTL Reference.

Das folgende Beispiel zeigt Eingabedaten für eine Integrationsanfrage.

{ "count": 1, "items": [ { "last_updated_date": "2015-04-24", "expire_date": "2016-04-25", "author_first_name": "John", "description": "Sample Description", "creation_date": "2015-04-20", "title": "Sample Title", "allow_comment": true, "author": { "last_name": "Doe", "email": "johndoe@example.com", "first_name": "John" }, "body": "Sample Body", "publish_date": "2015-04-25", "version": "1", "author_last_name": "Doe", "parent_id": 2345678901, "article_url": "http://www.example.com/articles/3456789012" } ], "version": 1 }

Das folgende Beispiel ist eine Mapping-Vorlage zur Transformation der Nachrichtenartikeldaten.

#set($inputRoot = $input.path('$')) { "count": $inputRoot.count, "items": [ #foreach($elem in $inputRoot.items) { "creation_date": "$elem.creation_date", "title": "$elem.title", "author": "$elem.author.first_name $elem.author.last_name", "body": "$elem.body", "publish_date": "$elem.publish_date", "article_url": "$elem.article_url" }#if($foreach.hasNext),#end #end ], "version": $inputRoot.version }

Das folgende Beispiel enthält Ausgabedaten aus der Transformation.

{ "count": 1, "items": [ { "creation_date": "2015-04-20", "title": "Sample Title", "author": "John Doe", "body": "Sample Body", "publish_date": "2015-04-25", "article_url": "http://www.example.com/articles/3456789012" } ], "version": 1 }

Eingabemodell für Nachrichtendaten

Sie können ein Modell für Ihre Eingabedaten definieren. Dieses Eingabemodell erfordert, dass ein Nachrichtenartikel einenURL, einen Titel und einen Hauptteil enthält. Sie können dieses Eingabemodell verwenden, um eine Anforderungsvalidierung für Ihre zu generieren SDK oder zu aktivierenAPI.

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "NewsArticleInputModel", "type": "object", "properties": { "count": { "type": "integer" }, "items": { "type": "array", "items": { "type": "object", "required": [ "article_url", "title", "body" ], "properties": { "last_updated_date": { "type": "string" }, "expire_date": { "type": "string" }, "author_first_name": { "type": "string" }, "description": { "type": "string" }, "creation_date": { "type": "string" }, "title": { "type": "string" }, "allow_comment": { "type": "boolean" }, "author": { "type": "object", "properties": { "last_name": { "type": "string" }, "email": { "type": "string" }, "first_name": { "type": "string" } } }, "body": { "type": "string" }, "publish_date": { "type": "string" }, "version": { "type": "string" }, "author_last_name": { "type": "string" }, "parent_id": { "type": "integer" }, "article_url": { "type": "string" } } } }, "version": { "type": "integer" } } }

Ausgabemodell für Nachrichtendaten

Sie können ein Modell für Ihre Ausgabedaten definieren. Sie können dieses Modell für ein Methodenantwortmodell verwenden, das erforderlich ist, wenn Sie ein stark typisiertes Modell SDK für generieren. API Dies stellt sicher, dass die Ausgabe an eine geeignete Klasse in Java oder Objective-C übergeben wird.

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "PhotosOutputModel", "type": "object", "properties": { "photos": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "photographedBy": { "type": "string" }, "title": { "type": "string" }, "ispublic": { "type": "boolean" }, "isfriend": { "type": "boolean" }, "isfamily": { "type": "boolean" } } } } } }

Eingabe-Mapping-Vorlage für Nachrichtendaten

Sie können eine Zuweisungsvorlage definieren, um Eingabedaten zu ändern. Sie können Eingabedaten für weitere Funktionsintegrationen oder Integrationsantworten ändern.

#set($inputRoot = $input.path('$')) { "count": $inputRoot.count, "items": [ #foreach($elem in $inputRoot.items) { "last_updated_date": "$elem.last_updated_date", "expire_date": "$elem.expire_date", "author_first_name": "$elem.author_first_name", "description": "$elem.description", "creation_date": "$elem.creation_date", "title": "$elem.title", "allow_comment": "$elem.allow_comment", "author": { "last_name": "$elem.author.last_name", "email": "$elem.author.email", "first_name": "$elem.author.first_name" }, "body": "$elem.body", "publish_date": "$elem.publish_date", "version": "$elem.version", "author_last_name": "$elem.author_last_name", "parent_id": $elem.parent_id, "article_url": "$elem.article_url" }#if($foreach.hasNext),#end #end ], "version": $inputRoot.version }