Как разобрать параметры тела на AWS lambda?

В моей лямбда-функции AWS у меня есть доступ к событию json, которое содержит параметр с именем: body. проблема в том, что это необработанная строка тела (не разобранная на отдельные параметры).

{
  input: {
    body: "------WebKitFormBoundarys3wLu6HlaCBrIExe\r\nContent-Disposition: form-data; name=\"foo\"\r\n\r\nbar\r\n------WebKitFormBoundarys3wLu6HlaCBrIExe\r\nContent-Disposition: form-data; name=\"media[]\"\r\n\r\nhthtth\r\n------WebKitFormBoundarys3wLu6HlaCBrIExe\r\nContent-Disposition: form-data; name=\"media[]\"\r\n\r\nlololol\r\n------WebKitFormBoundarys3wLu6HlaCBrIExe--\r\n"
  }
}

Я хотел бы взять это и превратиться в:

{
  foo: 'bar',
  media: [
    "grgkoerpkge",
    "twepgbopcib"
  ]
}

Я бы предпочел не использовать какой-нибудь раздутый экспресс-сервер только для анализа строки тела.

P.S. Я пытался использовать body-parser, но похоже, что он работает только с экспресс как промежуточное ПО


person CodeOverload    schedule 06.08.2017    source источник
comment
Вы можете найти решение здесь   -  person sayan saha    schedule 01.11.2020


Ответы (3)


Отправьте его на свою лямбду в формате JSON.

Затем в вашей лямбде (если вы используете интеграцию lambda-proxy) проанализируйте ее с помощью JSON.parse(event.body).

person Noel Llevares    schedule 07.08.2017
comment
Я не могу контролировать, что мне присылают — это вебхук от сервиса - person CodeOverload; 07.08.2017

Вы передаете параметры по форме или с помощью «Content-Type» в заголовке «application/x-www-form-urlencoded».

Вы должны передать его с помощью «application/json»

person Guerra    schedule 13.08.2017

Недавно столкнулся с подобной проблемой, так как тип содержимого в запросе был в текстовом формате, я использовал querystring, встроенный модуль в node js для анализа строки тела, подробнее о строке запроса

const querystring = require('querystring');

& в обработчике лямбда,

var jsonData = querystring.parse(event.body);
person dc7    schedule 11.06.2020
comment
Это работает только тогда, когда тело Content-Type является application/x-www-form-urlencoded, не работает для multipart/form-data. - person sayan saha; 01.11.2020