Я работал с шаблонами отображения на AWS API Gateway, в частности, для интеграции с DynamoDB. И я нашел очень неудобным для проверки по необязательным полям. Например, у меня есть полезная нагрузка JSON, подобная этой:
{
"optional_field": "abcd"
}
Теперь, чтобы поместить его в базу данных, я использую такое отображение:
#set($hasOptionalField = $input.path('$.optional_field') != "")
{
"TableName": "A_Table",
"Item": {
"id": {"S": "$context.requestId"}
#if($hasOptionalField),
"optional_field": {"S": "$input.path('$.optional_field')"}
#end
}
}
Согласно Apache Velocity Reference Я должен быть в состоянии использовать гораздо более простой синтаксис, проверять наличие нулевого, пустого, ложного или нулевого значения и автоматически возвращаться к некоторому альтернативному значению, что-то красивое, как это:
{
"TableName": "A_Table",
"Item": {
"id": {"S": "$context.requestId"},
"optional_field": {"S": "${input.path('$.optional_field')|'no_data'}"}
}
}
Я мог бы просто оставить все как есть без какого-либо отступления, но API DynamoDB выдает ошибку, если вы попытаетесь вставить пустую строку в качестве значения атрибута.
Кажется, что шаблоны сопоставления API-шлюзов не на 100% реализуют спецификацию Apache Velocity?