AWS Lambda, какой тип запроса выполняет тестовая кнопка? - PullRequest
0 голосов
/ 10 октября 2018

AWS Lambda новичок здесь.Я проводил некоторые тесты с функциями AWS Lambda, и есть кое-что, что не работает для меня правильно.С учетом этой лямбда-функции:

exports.handler = async (event, context, callback) => {
    var response = {
        statusCode: 200,
        headers: {'Content-Type': 'application/json'},
        response: event.talk
    };
    callback(null, response);
};

Когда я нажимаю кнопку тестирования с этим содержимым ( здесь - скриншот):

{
   "talk": "Hello World"
}

Я получаю этот ответ ( здесь - скриншот):

{
  "statusCode": 200,
  "headers": {
    "Content-Type": "application/json"
},
  "response": "Hello World"
}

Но когда я делаю POST-запрос (я добавил открытый API-шлюз, вижу его здесь ), он просто возвращает пустые данные, а иногда и внутреннюю ошибку сервера ( здесь - скриншот):

no data

Если я изменю свою функцию Lambda на JSON-разбор тела, она будет работать

exports.handler = async (event, context, callback) => {
    var body = JSON.parse(event.body);
    var talk = body.talk;
    var response = {
        statusCode: 200,
        headers: {'Content-Type': 'application/json'},
        body: JSON.stringify(talk)
    };
    callback(null, response);
};

Что это происходит?Почему кнопка теста работает не так, как POST-запрос?Я хочу, чтобы оба работали, особенно тест, потому что я хочу "отладить" "без сервера"

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Когда вы звоните AWS lambda обрабатывает запрос, который вы передаете в запросе.

Итак, когда вам нужно передать данные в event с телом, просто добавьте body params в event Object.

{
 "body": "{\"talk\":\"Hello World\"}"
}

Примечание:

Когда вы вызываете лямбду из POST, тогда запросите Object, содержащий body в случае.

0 голосов
/ 10 октября 2018

Кнопка тестирования просто запускает вашу лямбду с предоставленным событием, но когда вы запускаете ее через прокси-сервер шлюза API, вы получаете событие в другом формате.Что касается того, почему он работает, когда вы анализируете event.body, то это потому, что event.body будет содержать сообщение, отправляемое через API.1005 * И просмотреть формат входящего события.

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