What is @middy/http-json-body-parser?
@middy/http-json-body-parser is a middleware for AWS Lambda functions that automatically parses JSON-encoded request bodies. It simplifies the process of handling JSON input in serverless applications by converting the body of incoming HTTP requests into a JavaScript object.
What are @middy/http-json-body-parser's main functionalities?
Automatic JSON Parsing
This feature automatically parses the JSON body of incoming HTTP requests and makes it available as a JavaScript object in `event.body`. This eliminates the need to manually parse the JSON string in each handler.
const middy = require('@middy/core');
const jsonBodyParser = require('@middy/http-json-body-parser');
const handler = middy((event, context) => {
// event.body is now a parsed JSON object
return {
statusCode: 200,
body: JSON.stringify({ message: 'Parsed body', data: event.body })
};
});
handler.use(jsonBodyParser());
module.exports = { handler };
Other packages similar to @middy/http-json-body-parser
body-parser
body-parser is a Node.js middleware for parsing incoming request bodies in a middleware before your handlers, available under the `req.body` property. It supports various content types including JSON, URL-encoded, and raw data. Unlike @middy/http-json-body-parser, which is specifically designed for AWS Lambda, body-parser is more general-purpose and can be used in any Node.js application.
lambda-middleware
lambda-middleware is a collection of middleware for AWS Lambda functions, similar to Middy. It includes a JSON body parser middleware that provides similar functionality to @middy/http-json-body-parser. However, lambda-middleware offers a broader set of middleware options for various use cases.
This middleware automatically parses HTTP requests with a JSON body and converts the body into an
object. Also handles gracefully broken JSON as UnprocessableEntity (422 errors)
if used in combination with httpErrorHandler
.
It can also be used in combination with validator as a prior step to normalize the
event body input as an object so that the content can be validated.
If the body has been parsed as JSON, you can access the original body (e.g. for webhook signature validation) through the request.event.rawBody
.
Install
To install this middleware you can use NPM:
npm install --save @middy/http-json-body-parser
Options
reviver
(function) (default undefined
): A reviver parameter may be passed which will be used JSON.parse
ing the body.
Sample usage
import middy from '@middy/core'
import httpHeaderNormalizer from '@middy/http-header-normalizer'
import httpJsonBodyParser from '@middy/http-json-body-parser'
const handler = middy((event, context) => {
return {}
})
handler
.use(httpHeaderNormalizer())
.use(httpJsonBodyParser())
const event = {
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({foo: 'bar'})
}
handler(event, {}, (_, body) => {
t.is(body,{foo: 'bar'})
})
Middy documentation and examples
For more documentation and examples, refers to the main Middy monorepo on GitHub or Middy official website.
Contributing
Everyone is very welcome to contribute to this repository. Feel free to raise issues or to submit Pull Requests.
License
Licensed under MIT License. Copyright (c) 2017-2022 Luciano Mammino, will Farrell, and the Middy team.