如何解析AWS lambda上的body params?

时间:2017-08-06 17:04:43

标签: node.js lambda

在我的AWS lambda函数上,我可以访问一个事件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,但似乎它仅适用于Express作为中间件

3 个答案:

答案 0 :(得分:0)

将其作为JSON发送给您的lambda。

然后,在您的lambda中(如果使用lambda-proxy集成),使用JSON.parse(event.body)解析它。

答案 1 :(得分:0)

您可以通过表单或“Content-Type”标题“application / x-www-form-urlencoded”传递params。

你用“application / json”来传递它

答案 2 :(得分:0)

最近遇到了类似的问题,因为请求中的内容类型是纯文本格式,所以我使用了querystring(内置在节点js中的模块中)来解析正文字符串, more about querystring

const querystring = require('querystring');

&在lambda处理程序中

var jsonData = querystring.parse(event.body);