express.jsonとbodyParser.json


99

私は比較的新しいアプリを書いていて、どちらを使用すべきか疑問に思っていました。

express.json()

または

bodyParser.json()

彼らは同じことをしていると思いますか?

express.json()すでに内蔵されているのでそのまま使いたいです。


express@4.17.1だけで依存関係としてボディパーサー「1.19.0」を使用しています
Tagi

回答:


233

以前のバージョンのExpressには、多くのミドルウェアがバンドルされていました。bodyParserはミドルウェアの1つでした。Express 4.0がリリースされたとき、バンドルされていたミドルウェアをExpressから削除し、代わりに個別のパッケージにすることを決定しました。構文はbodyParserモジュールのインストール後にからapp.use(express.json())に変更されましapp.use(bodyParser.json())た。

bodyParserは、以前のようにExpressにバンドルすることを望んでいたため、リリース4.16.0でExpressに再び追加されました。つまりbodyParser.json()、最新のリリースを使用している場合は、これ以上使用する必要はありません。express.json()代わりに使用できます。

4.16.0のリリース履歴は、興味のある方はこちら、プルリクエストはこちら


1
それでまたできますapp.use(express.urlencoded({ extended: true }));か?
RobinMétral19年

1
ああ、それはあなたがリンクしたPRでも言及されています。すごい!
RobinMétral19年

1
それは彼らが同じ仕事をしているということですか?
GNETO DOMINIQUE

両方を使用した場合//データ解析app.use(express.json()); app.use(express.urlencoded({extended:false})); いいですか?YouTubeのチュートリアルで両方を使用するように指示されているため
rickvian

1
@rickvian-必要に応じて両方を使用できます。jsonはJSON用、urlencodedはURLエンコードされたデータ用です。両方を追加すると、両方のタイプを解析できるようになります。
ミカサンドランド

14

はい!正しい

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;

31
このコードスニペットは問題を解決する可能性がありますが、説明を含めると、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。
Brett DeWoody

8

はい、どちらも同じです。

ファイルnode_module / express / lib / express.jsに移動した場合

あなたはモジュールの依存関係の下にボディパーサーモジュールがすでにインポートされているのを見ることができます

/**
 * Module dependencies.
 */

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

bodyparserモジュール内のオブジェクトとメソッドは、特別なオブジェクトモジュールを使用してエクスポートされるため、アクセスできます。exports

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

これは、呼び出すだけでExpressオブジェクトからアクセスできます

express.json()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.