Я создаю шаблон ответа для конечной точки шлюза API AWS для обработки ошибок. Входящее сообщение об ошибке JSON выглядит следующим образом:
{
"__type": "UserNotFoundException",
"message": "User does not exist."
}
{
"__type": "NotAuthorizedException",
"message": "Incorrect username or password."
}
{
"__type": "NotAuthorizedException",
"message": "Password attempts exceeded"
}
Мой шаблон сопоставления VTL выглядит следующим образом:
#set($inputRoot = $input.path('$'))
#set($unf = "UserNotFoundException")
#set($nae = "NotAuthorizedException")
#set($type =$input.json('$.__type'))
#if($type == $unf)
{
"__type": "UserNotFoundException",
"message": $input.json('$.message'),
"referenceCode": "UNF0000"
}
#elseif($type == $nae)
{
"__type": "NotAuthorizedException",
"message": $input.json('$.message'),
"referenceCode": "NAE0000"
}
#else
{
"__type": $input.json('$.__type'),
"message": $input.json('$.message'),
"referenceCode": "FAIL0000"
}
#end
Независимо от того, какой ввод я использую, чтобы вызвать ошибку 400 ответ, это проваливается в мой случай все остальное. Тип __type, который выводится в моем случае else, соответствует одному из других условных выражений, поэтому я запутался, почему они его не улавливают. Любая помощь будет оценена! (Я новичок в AWS и VTL)