Skip to content

Migration Guide V1 -> V2 #632

Description

@whoisstan

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:

if (req.body.username){
   // do something
}

It has to change to something like this

if (req.body?.username){
   // do something
}

I added a workaround to not have to change lot's of code

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
  })
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions