Fotos-Beispiel (API Gateway-Modelle und -Mapping-Vorlagen)
Das folgende Beispiel zeigt eine Fotoalbum-API in API Gateway. Wir bieten ein Beispiel für die Datentransformation, zusätzliche Modelle und Zuweisungsvorlagen. Weitere Informationen zu Datentransformationen finden Sie unter Grundlegendes zu Zuweisungsvorlagen. Weitere Informationen zu Modellen und Zuweisungsvorlagen in API Gateway finden Sie unter PetStore-Zuweisungsvorlage.
Themen
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 |
|
Ausgabe-Zuweisungsvorlage |
|
Ausgabedaten |
|
Eingabemodell für Fotodaten
Sie können ein Modell für Ihre Eingabedaten definieren. Dieses Eingabemodell erfordert, dass Sie ein Foto hochladen, und es gibt ein Minimum von 10 Fotos pro Seite an. 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 ] } }