本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
照片示例(API Gateway 模型和映射模板)
以下示例显示了 API Gateway 中的相册 API。我们提供了示例数据转换、其他模型和映射模板。有关数据转换的更多信息,请参阅了解映射模板。有关 API Gateway 中模型和映射模板的更多信息,请参阅PetStore 映射模板。
数据转换示例
以下示例说明如何使用 Velocity 模板语言(VTL)映射模板转换有关照片的输入数据。有关 Velocity 模板语言的更多信息,请参阅 Apache Velocity – VTL 参考
输入数据 |
|
输出映射模板 |
|
输出数据 |
|
照片数据的输入模型
您可以为输入数据定义模型。此输入模型要求您上传一张照片,并且每页至少指定 10 张照片。您可以使用此输入模型生成 SDK 或为您的 API 开启请求验证。
{ "$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" } } } } } } } }
照片数据的输出模型
您可以为输出数据定义模型。您可以将此模型用于方法响应模型,这在为 API 生成强类型 SDK 时是必需的。这会导致输出将在 Java 或 Objective-C 中强制转换为适当的类。
{ "$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" } } } } } }
照片数据的输入映射模板
您可以定义映射模板来修改输入数据。您可以修改输入数据以进行进一步的函数集成或集成响应。
#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 ] } }