在 lambda 函数中发送 JSON 响应时出现无服务器离线响应问题

Avi*_*ash 3 node.js aws-lambda aws-api-gateway serverless-framework serverless-framework-offline

var result = [{
                count : 10,
                data : [{"id":11,"id":22}]
               }];
var response = {
                statusCode: 200,
                count: result.length,
                body: result
            };
            callback(null, response);
Run Code Online (Sandbox Code Playgroud)

控制台错误

根据 API Gateway 规范,正文内容必须是字符串化的。检查您的 Lambda 响应并确保您在 body 对象上调用 JSON.stringify(YOUR_CONTENT)

Que*_*yot 6

此处的错误为您提供了解决方案。
API Gateway 的回调需要一个字符串而不是一个 javascript 对象。在将其传递给回调之前,您必须对其进行字符串化:

var result = [{
                count : 10,
                data : [{"id":11,"id":22}]
               }];
var response = {
                statusCode: 200,
                count: result.length,
                body: result
            };
            callback(null, JSON.stringify(response));
Run Code Online (Sandbox Code Playgroud)

编辑:
然后在客户端解析 JSON 字符串以将其恢复为对象(此示例假设您的客户端也是 Javascript):

var myObject = JSON.parse(responseBody);
Run Code Online (Sandbox Code Playgroud)