Необязательное поле «Шаблон сопоставления шлюза API» - PullRequest
0 голосов
/ 06 ноября 2018

Я работал с шаблонами отображения на 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?

...