Настройка заголовка ответа HTTP из AWS lambda
My API Gateway/Lamdba setup возвращает заголовок ответа HTTP:
Lamdba использует функцию обратного вызова, чтобы вернуть значение как часть json
и Integration Response отображает его в заголовок (с помощью integration.response.body)
С помощью этого решения значения возвращаются как в теле, так и в заголовке.
Как я могу отображать заголовки из ответа лямбды без дублирования значений в теле ответа?
Ответы
Ответ 1
Если у вас включена интеграция с Lambda-прокси, вы можете установить заголовки ответов как часть вывода Lambda, а API-шлюз будет возвращать их как часть HTTP-ответа клиенту.
Пример Node.js:
callback(null, {
"isBase64Encoded": false, // Set to 'true' for binary support.
"statusCode": 200,
"headers": {
"header1Name": "header1Value",
"header2Name": "header2Value",
},
"body": "...",
});
где headers
может быть нулевым или неуказанным, если не нужно возвращать дополнительные заголовки ответа.
См. Формат вывода лямбда-функции для интеграции прокси-серверов.
Ответ 2
и, если у вас НЕ включена интеграция с прокси-сервером Lamba, вы можете добавить (и отобразить) заголовки ответов в консоли шлюза Amazon API:
перейдите к ресурсам → выполнение метода → ответ метода → добавьте заголовок "Access-Control-Allow-Origin" (или любой другой) для статуса http 200. Затем вернитесь к выполнению метода → интеграция метода → http status 200 → установите сопоставление заголовка для 'Access-Control-Allow-Origin' в '*' (или как угодно).
Решена эта ошибка...: "На запрашиваемом ресурсе отсутствует заголовок 'Access-Control-Allow-Origin'"
Ответ 3
Так как в вопросе говорится, что используются пользовательские сопоставления (с использованиемgration.response.body), это означает, что интеграции лямбда-прокси НЕ используются. Поэтому в данном случае решение состоит в том, чтобы отобразить заголовки так, как вы это делаете.
Чтобы удалить дублирование заголовков из части тела, используйте шаблон отображения в ответе интеграции и игнорируйте заголовки в отображении. Я думаю, что вы можете использовать сквозные ответы, поэтому вы видите дублирующиеся заголовки.
Смотрите больше документации здесь: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html