Вывод текстового содержимого из конечной точки шлюза API Amazon

Использование шлюза API Amazon Я могу создать конечную точку, которая вызовет функцию лямбда, которая выводит обычный текст. Однако, когда я делаю запрос на конечную точку, вывод возвращается с типом содержимого по умолчанию "application/json". Это выводит обычный текстовый ответ, заключенный в кавычки. Я хотел бы изменить заголовок ответа на "text/plain", чтобы он просто выводил текст, развернутый кавычками. Кто-нибудь знает, как это сделать?

Ответ 1

Итак, мне удалось заставить эту работу работать.

В ответе на интеграцию вам нужно добавить новый шаблон сопоставления типа "text/plain"

В поле введите тип шаблона:

$input.path('$')

Или путь к значению, которое вы хотите вернуть, и сохраните новый шаблон сопоставления (не выбирайте модель!)

Затем вам необходимо повторно развернуть свой API, чтобы изменения вступили в силу.

Одна вещь, которую я имел на месте, - это также метод Method Response, установленный как "text/plain", используя пустую модель. Я не уверен, что это имеет эффект, но если выше не работает, просто добавьте это.

Ответ 2

Anthony way все еще оставлял кавычки в выходной строке. Поэтому, чтобы ответить на ответ интеграции, создайте новый шаблон сопоставления для типа text/plain. Он должен иметь значение:

$input.path('$')

Теперь, если вы запустите context.succeed("somestring"), вывод будет "somestring", завернутый в кавычки. Это связано с тем, что оно сжато как термин json. Как неприятное обходное решение, вы можете сделать что-то вроде:

var base = JSON.stringify;
JSON.stringify = function(given) {
  JSON.stringify = base;
  return given;
}
context.succeed("somestring");

В качестве дополнительной заметки вы можете получить больше подсказок, прочитав console.log(context.succeed).