Serverless offline response issue while sending JSON response in lambda function

6.8k Views Asked by At
var result = [{
                count : 10,
                data : [{"id":11,"id":22}]
               }];
var response = {
                statusCode: 200,
                count: result.length,
                body: result
            };
            callback(null, response);

Error on Console

According to the API Gateway specs, the body content must be stringified. Check your Lambda response and make sure you are invoking JSON.stringify(YOUR_CONTENT) on your body object

1

There are 1 best solutions below

7
On BEST ANSWER

The error here gives you the solution.
API Gateway's callback expects a string and not a javascript object. You have to stringify it before passing it to the callback:

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

EDIT:
Then on the client side parse the JSON string to get it back to an object (this example assume that your client is Javascript too):

var myObject = JSON.parse(responseBody);