expressjs / expressjs/body-parser
Migration Guide V1 -> V2
- Dominant language
- JavaScript
- Stars
- 5.5k
- Forks
- 767
- Avg merge
- 13h 53m
- Merged PRs (30d)
- 10
Description
### Description
For an empty http request body the v1 json parser would provide a {} request body. V2 provides an `undefined` body
### Expectations
This to be described as it can cause all kinds of issues and errors. If you have done that and I missed it, sorry.
If you expect for example a username entry:
```js
if (req.body.username){
// do something
}
```
It has to change to something like this
```js
if (req.body?.username){
// do something
}
```
I added a workaround to not have to change lot's of code
```js
const bodyParser = require('body-parser'),
express = require('express'),
json_reviver = require('../../lib/json_reviver')
function jsonWithDefault(options) {
const jsonParser = bodyParser.json(options);
return (req, res, next) => {
jsonParser(req, res, (err) => {
if (err) return next(err);
if (req.body === undefined) {
req.body = {}; // restore v1 behavior
}
next();
});
};
}
module.exports = {
jsonParser: jsonWithDefault({ limit: '5mb', reviver: json_reviver }),
urlEncoded: bodyParser.urlencoded({ extended: true, limit: '5mb' }),
raw: express.raw({
inflate: true,
limit: '50mb',
type: () => true, // this matches all content types
})
};
```
Contributor guide
Assessment
This issue has not been assessed yet.