шаблон сопоставления шлюза api aws для двоичных файлов

#amazon-web-services #aws-lambda #aws-api-gateway

Вопрос:

Я пытаюсь отправить двоичный файл и строковые параметры в AWS API Gateway.

это шаблон сопоставления, который находится в сообщении API Gateway:

 {  "imageFile" : $input.params('imageFile'),  "purdueUsername" : $input.params('purdueUsername'),  "description" : $input.params('description'),  "price" : $input.params('price'),  "longitude" : $input.params('longitude'),  "latitude" : $input.params('latitude'),  "category" : $input.params('category'), }   

Выполнение запроса на публикацию приводит к этому: введите описание изображения здесь

Когда я попробую это

 {  "imageFile" : "$input.params('imageFile')",  "purdueUsername" : "$input.params('purdueUsername')",  "description" : "$input.params('description')",  "price" : "$input.params('price')",  "longitude" : "$input.params('longitude')",  "latitude" : "$input.params('latitude')",  "category" : "$input.params('category')", }  

Я получаю пустые параметры. API не получает параметры, которые я отправляю через POST-запрос.

введите описание изображения здесь

Как я должен изменить шаблон сопоставления? Примечание: Когда я пытаюсь использовать файл изображения только в шаблоне сопоставления и отправляю только двоичный файл без дополнительных параметров, он работает совершенно нормально.

 { "imageFile" : "$input.body" }  

Однако я хочу иметь возможность отправлять другие параметры помимо двоичного файла.

Ответ №1:

вот как я решил эту проблему. Я отправляю двоичный файл в теле запроса POST и другие параметры в качестве заголовка.

это шаблон отображения, который я разместил на шлюзе API AWS

 {  "purdueUsername" : "$input.params('purdueUsername')",  "description" : "$input.params('description')",  "price" : "$input.params('price')",  "longitude" : "$input.params('longitude')",  "latitude" : "$input.params('latitude')",  "category" : "$input.params('category')",  "isbnNumber" : "$input.params('isbnNumber')",  "imageFile" : "$input.body" }