Nispeten yeni bir uygulama yazıyorum ve hangisini kullanmam gerektiğini merak ediyordum:
express.json()
veya
bodyParser.json()
Aynı şeyi yaptıklarını varsayabilir miyim?
express.json()
Zaten yerleşik olduğu için kullanmak istiyorum .
Nispeten yeni bir uygulama yazıyorum ve hangisini kullanmam gerektiğini merak ediyordum:
express.json()
veya
bodyParser.json()
Aynı şeyi yaptıklarını varsayabilir miyim?
express.json()
Zaten yerleşik olduğu için kullanmak istiyorum .
Yanıtlar:
Express'in önceki sürümlerinde bir çok ara katman yazılımı bulunuyordu. bodyParser ona gelen ara yazılımlardan biriydi. Express 4.0 piyasaya sürüldüğünde, paketlenmiş ara yazılımı Express'ten kaldırmaya ve bunun yerine ayrı paketler yapmaya karar verdiler. Sözdizimi sonra değiştirilen app.use(express.json())
için app.use(bodyParser.json())
bodyParser modülünü yükledikten sonra.
bodyParser, 4.16.0 sürümünde Express'e geri eklendi, çünkü insanlar daha önce olduğu gibi Express ile birlikte paketlenmesini istiyorlardı. Bu bodyParser.json()
, son sürümdeyseniz artık kullanmanız gerekmediği anlamına gelir . Bunun express.json()
yerine kullanabilirsiniz .
Sürüm geçmişi 4.16.0 içindir, ilgilenenler için burada ve çekme talebi burada .
app.use(express.urlencoded({ extended: true }));
zaman biz de yapabilir miyiz ?
EVET! Doğru
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;
Evet ikisi de aynı.
node_module / express / lib / express.js dosyasına giderseniz
modül bağımlılıkları altında görebilirsiniz body parser modülü zaten içe aktarılmış
/**
* Module dependencies.
*/
var bodyParser = require('body-parser')
//other modules
bodyparser modülündeki nesnelere ve yöntemlere, özel nesne modülü kullanılarak dışa aktarıldıklarında erişilebilir.
exports = module.exports = createApplication;
exports.json = bodyParser.json
buna ekspres nesneden yalnızca çağrılarak erişilebilir
express.json()
Evet!! İnsanların vücut ayrıştırıcıyı ifade ile geri entegre etme konusundaki yaygın görüşleri nedeniyle, en son sürüm tam olarak bunu yapıyor. Her ikisinin de aynı görevleri gerçekleştirdiğini, yani gelen istek nesnesini JSON nesneleri olarak tanımak konusunda haklı olmalısınız. Her ikisini de kullanmaktan çekinmeyin.
Evet!! ikisini de kullanabilirsiniz. Ancak, express.json()
şimdi zaten içine yerleştirildiğinden express
, kullanmak express.json()
için bodyParser.json()
.