Как получить доступ к моделям шлюза API AWS из iOS

Схема модели AWS

{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "QuestionsModel",
    "type": "array",
    "items": {
    "type": "object",
    "properties": {
        "placeholder" : { "type":"string" },
        "type" : { "type":"string" },
        "order": { "type": "integer" },
        "prompt": { "type": "string" },
        "section_name": { "type": "string" }
        }
    }
}

Ответ интеграции с AWS — Шаблон сопоставления — application/json

Отображение с использованием языка шаблонов Velocity Массив...

#set($inputRoot = $input.path('$'))
[
#foreach($elem in $inputRoot)
{
  "type" : "$elem.type",
  "placeholder" : "$elem.placeholder",
  "order" : "$elem.order",
  "prompt" : "$elem.prompt",
  "section_name" : "$elem.section_name"
} 
#if($foreach.hasNext),#end
#end
]

Функция AWS Lambda

def lambda_handler(event, context):
    client = boto3.client('dynamodb')

    response = client.scan(
        TableName='Question',
        AttributesToGet=[
            'type',
            'order',
            'section_name',
            'prompt',
            'placeholder'])

    return = response['Items']

Приложение iOS для модели

Модель iOS имеет поле type типа NSString, заполненное значением {S=Hello World}.

Я бы предпочел, чтобы поле iOS было равно Hello World, избавляя меня от синтаксического анализа {S=*}

Где я ошибаюсь?


person Carl    schedule 01.03.2016    source источник


Ответы (2)


Вы настроили модель ответа в ответе метода? Вот основное пошаговое руководство, предоставленное API Gateway. http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-models.html

person Ka Hou Ieong    schedule 01.03.2016
comment
Да. Я следил за этой страницей и создал iOS API. Я отмечаю модель, которую я определил. Я проверю, правильно ли я возвращаю массив из lambda/dynamodb. - person Carl; 01.03.2016

Я закрепил ответ в другом вопросе.

Недокументировано, но вы можете просто указать тип после имени поля в шаблоне сопоставления:

#set($inputRoot = $input.path('$'))
[
#foreach($elem in $inputRoot)
{
  "field1" : "$elem.field1.S",
  "field2" : $elem.field2.N
}#if($foreach.hasNext),#end
#end
]

Обратите внимание, что строковые поля должны быть заключены в кавычки, а числа — нет.

person Carl    schedule 02.03.2016