AWS Lambda / API Gateway Не проходит через кодирование - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь преобразовать работающую службу API Lumen в AWS, и я нахожусь в тупике при получении внешней службы REST API для работы.Служба возвращает сжатые данные, но этот факт не передается обратно в приложение (Vue) в браузере должным образом.Я попытался добавить заголовки в ответ, как показано ниже, но он все еще не работает.Я вижу заголовки в ответе в консоли браузера, но браузер все еще не интерпретирует его, поэтому данные по-прежнему выглядят как мусор.Какие-нибудь подсказки относительно того, как заставить это работать?

var req = require('request');
exports.handler = function (event, context, callback) {
    const params = {
        url: 'http://api.service',
        headers: { 'Authorization': 'code',
                'Accept-Encoding': 'gzip,deflate',
                'Content-Type': 'application/json' },
        json: {'criteria': {
                    'checkInDate': '2019-10-22',
                    'checkOutDate': '2019-10-25',
                    'additional': {'minimumStarRating': 0},
                    'cityId': 11774}}
    };
    req.post(params, function(err, res, body) {
        if(err){
            callback(err, null);
        } else{
            callback(null, {
                "statusCode": 200,
                "headers": {
                    "Content-Type": "application/json",
                    "Content-Encoding": "gzip"
                },
                "body": body
            });
        }
    });
};

1 Ответ

0 голосов
/ 19 июня 2019

В случае, если вы видите все зашифрованные символы, есть вероятность, что вы еще не позволили API-шлюзу обрабатывать ваш лямбда-ответ как двоичный (поскольку он gzip-ed из вашей лямбды)

Посмотрите наdocument

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html

И эта статья

К сожалению, API-шлюз в настоящее время не замечает gzip.Если мы используем прокси-сервер HTTP, а другая конечная точка HTTP возвращает ответ в формате gzipped, он попытается перекодировать его, искажая ответ.

Мы должны указать шлюзу API обработать наши ответы.в виде бинарных файлов - никак не трогать его.

https://techblog.commercetools.com/gzip-on-aws-lambda-and-api-gateway-5170bb02b543

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...