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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions