expressjs / expressjs/body-parser

Migration Guide V1 -> V2

Open
#632 1 comment 5 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.