Skip to content

Migration Guide V1 -> V2 #632

@whoisstan

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions