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

Beispieldatenmodelle und Zuordnungsvorlagen für API Gateway

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

Beispiel für ein Fotoalbum

Das folgende Beispiel zeigt eine 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 VTL-Zuweisungsvorlage (Velocity Template Language) transformieren können. Weitere Informationen zur Velocity Template Language finden Sie in der Apache Velocity – VTL-Reference.

Eingabedaten
{ "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 } ] } }
Ausgabe-Zuweisungsvorlage
#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 ] }
Ausgabedaten
{ "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 ein SDK zu generieren oder um eine Anforderungsvalidierung für Ihre API zu aktivieren.

{ "$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; dies ist erforderlich, wenn Sie ein stark typisiertes 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 eine 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 in der Apache Velocity – VTL-Reference.

Eingabedaten
{ "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 }
Ausgabe-Zuweisungsvorlage
#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 }
Ausgabedaten
{ "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 eine URL, einen Titel und einen Hauptteil enthält. Sie können dieses Eingabemodell verwenden, um ein SDK zu generieren oder um eine Anforderungsvalidierung für Ihre API zu aktivieren.

{ "$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; dies ist erforderlich, wenn Sie ein stark typisiertes 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-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 }