1

我一直在使用无服务器框架开发一个简单的功能,该框架在 http POST 中获取一些数据,进行一些分析并将结果发回。我使用 serverless-offline 让它在我的机器上本地工作,但是在部署它时,我在解析 event.body 时遇到错误。

注销 event.body 它是一个如下所示的字符串:

----------------------------267253304929569989286258
Content-Disposition: form-data; name="text"

TEST
----------------------------267253304929569989286258--

所以解析失败是有道理的,但我不知道为什么会发生这个错误。有什么建议么?我尝试了很多不同的东西,但完全被难住了。

提前致谢!

4

3 回答 3

0

你不能 JSON.parse 那个 event.body 因为它不是 JSON。看起来任何 POST 数据都使用多部分表单 POST 样式请求而不是发送 JSON。你是如何调用 HTTP POST 的?

于 2018-07-17T02:21:23.970 回答
0

谢谢@Brian Winant!我将答案作为屏幕截图放在这里,这样更清楚。在 Postman 中,执行以下操作:

在此处输入图像描述

如果内容类型为 , AWS Lambda 将event.body作为编码查询字符串返回x-www-urlencoded。要让它返回一个 JSON 字符串,您可以解析、发送 JSON 数据并将内容类型设置为application/json.

于 2020-07-10T05:07:15.427 回答
0

我遇到了同样的问题,经过大量调试后发现了两件重要的事情:

1.当内容类型为application/x-www-form-urlencoded时,您可能需要以不同的方式解析数据:

const qs = require('querystring');

module.exports.run = async event => {
    try {
        const data = qs.parse(event.body);
        console.info('DATA:', data);
    } catch(e) {
        console.error(e.message);
    }
}

2.当请求的Content-Typemultipart/form-data时,解析会更加复杂。我会建议额外的依赖来解析它,如多方或您选择的任何其他

于 2018-09-05T15:39:51.700 回答