Я настроил AWS API-шлюз для работы в качестве прокси для операции HTTP GET DynamoDB.
Следующий запрос интеграции извлекает все записи, где "topi c" == 'sensor' через HTTP GET / POST:
{
"TableName": "SensorData",
"IndexName": "topic-index",
"KeyConditionExpression": "topic = :v1",
"ExpressionAttributeValues": {
":v1": {
"S": "$input.params('sensor')"
}
}
}
Все это прекрасно работает. Моя проблема заключается в форматировании ответа интеграции, который сервер API AWS предоставляет конечному клиенту. У меня есть несколько различных тем, раскрываемых через API, и я хотел бы условно отформатировать полезные данные через «Шаблон отображения: application / json», основываясь на особенностях полезной нагрузки.
Я развернул этот скрипт, но мой развернутый API сейчас обслуживаю пустые словари:
#set($inputRoot = $input.path('$'))
{
#if("$elem.topic.S" == "sensor_kitchen")
"comments": [
#foreach($elem in $inputRoot.Items) {
"userId": "$elem.userId.S",
"topic": "$elem.topic.S",
"timeStamp": "$elem.timeStamp.S",
"status": "$elem.status.BOOL"
}#if($foreach.hasNext),#end
#end
]
#elseif("$elem.topic.S" == "sensor_livingroom")
"comments": [
#foreach($elem in $inputRoot.Items) {
"userId": "$elem.userId.S",
"topic": "$elem.topic.S",
"timeStamp": "$elem.timeStamp.S"
"status": "$elem.status.BOOL"
}#if($foreach.hasNext),#end
#end
]
#elseif("$elem.topic.S" == "sensor_bedroom")
"comments": [
#foreach($elem in $inputRoot.Items) {
"userId": "$elem.userId.S",
"topic": "$elem.topic.S",
"timeStamp": "$elem.timeStamp.S"
"heart_rate": "elem.heart_rate.S",
"heart_rate_variability": "$elem.heart_rate_variability.S",
"measured_signal_strength": "$elem.measured_signal_strength.S"
}#if($foreach.hasNext),#end
#end
]
#elseif("$elem.topic.S" == "sensor_bathroom")
"comments": [
#foreach($elem in $inputRoot.Items) {
"userId": "$elem.userId.S",
"topic": "$elem.topic.S",
"timeStamp": "$elem.timeStamp.S",
"prediction": "$elem.prediction.S"
}#if($foreach.hasNext),#end
#end
]
#end
}
Что я тут не так делаю? Любая помощь очень ценится.