express.json vs bodyParser.json

JsonExpress

Json Problem Overview


I'm writing a relatively new app and was wondering which I should use:

express.json()

or

bodyParser.json()

Can I assume they do the same thing.

I would like to just use express.json() as it is built in already.

Json Solutions


Solution 1 - Json

Earlier versions of Express used to have a lot of middleware bundled with it. bodyParser was one of the middleware that came with it. When Express 4.0 was released they decided to remove the bundled middleware from Express and make them separate packages instead. The syntax then changed from app.use(express.json()) to app.use(bodyParser.json()) after installing the bodyParser module.

bodyParser was added back to Express in release 4.16.0, because people wanted it bundled with Express like before. That means you don't have to use bodyParser.json() anymore if you are on the latest release. You can use express.json() instead.

The release history for 4.16.0 is here for those who are interested, and the pull request is here.

Solution 2 - Json

YES! Correct

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

Solution 3 - Json

Yes both are same .

if you go into the file node_module/express/lib/express.js

you can see under module dependencies body parser module is already imported

/**
 * Module dependencies.
 */

var bodyParser = require('body-parser')
//other modules

the objects and methods inside bodyparser module are accessible as they are exported using the special object module.exports

exports = module.exports = createApplication;
exports.json = bodyParser.json

this is accessible from express object just by calling

express.json()

Solution 4 - Json

Yes!! you can use both of them. However, since express.json() is now already built into express, it is wiser to use express.json() than the bodyParser.json().

Solution 5 - Json

Yes!! Due to the widespread opinion of the people to integrate body-parser back with the express, the latest release does exactly this. You should be right to assume that both perform the same tasks, that is to recognize incoming request object as JSON objects. Feel free to use either.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser7742676View Question on Stackoverflow
Solution 1 - JsonMika SundlandView Answer on Stackoverflow
Solution 2 - JsonOleg MikhailenkoView Answer on Stackoverflow
Solution 3 - JsonShersha FnView Answer on Stackoverflow
Solution 4 - JsonAnil ShresthaView Answer on Stackoverflow
Solution 5 - JsonTanDevView Answer on Stackoverflow