Отображение вывода Lambda в заголовок API Gateway
Я пытаюсь отобразить вывод JSON из функции Lambda в заголовок вызова шлюза API. В качестве примера здесь мы можем рассмотреть сценарий перенаправления. Поэтому я хотел бы добавить заголовок Location
в ответ от моего вызова шлюза API.
Выход JSON из функции лямбда:
{
Location: 'http://google.com'
}
В "Ответ метода" → "Заголовки ответов" я могу добавить заголовок Location
в нужный код состояния HTTP.
Затем в "Integration Response" → "Сопоставление заголовков" я могу добавить отображение заголовка Location
как что-то.
Теперь мой вопрос: что это за что-то?
Примечание. Я пробовал integration.response.header.Location
или использовал "Шаблоны сопоставления", но пока не повезло.
Есть вероятность, что в данный момент это будет невозможно (https://forums.aws.amazon.com/thread.jspa?messageID=651482), но так как API Gateway/Lambda развиваются так быстро, спросите в любом случае.
Ответы
Ответ 1
На форумах разработчиков AWS сегодня (25 сентября 2015 года) это пока невозможно, но может появиться в будущем:
API Gateway в настоящее время не поддерживает сопоставление от тела ответа интеграции к заголовкам ответов, но мы хотим добавить поддержку для этого в будущем.
Сообщение форума здесь
Изменить декабрь 2015. Функция добавлена в соответствии с сообщением сотрудника AWS в упомянутом выше потоке. Благодаря Peter Fox, указав это.
Ответ 2
На сегодняшний день (январь 2016 года) он работает, просто указывая integration.response.body.Location
в вашем случае.
Ответ 3
Сегодня (12 ноября, 2015 г.) я искал, как передать заголовок Location из моего backend API в заголовок Location в ответ интеграции.
Эта конфигурация работала, и я мог получить заголовок местоположения из backend api:
![введите описание изображения здесь]()
Похоже, что решение, предлагаемое Тобиасом, возможно в настоящее время. Однако заголовок Location указывает на API бэкэнд, и это не то, что мы хотим. Я попытаюсь найти решение для этого и разместить его здесь.
Ответ 4
На самом деле, похоже, вы можете получить доступ ко всем заголовкам, предоставленным исходным ответом (если он содержит Content-type, то вы можете ввести: integration.response.header.Content -type). Однако я не нашел способа добавить новый заголовок (кроме статического).