express.json बनाम bodyParser.json


100

मैं एक अपेक्षाकृत नया ऐप लिख रहा हूं और सोच रहा था कि मुझे क्या उपयोग करना चाहिए:

express.json()

या

bodyParser.json()

क्या मैं मान सकता हूं कि वे भी यही काम करते हैं।

मैं express.json()इसका उपयोग करना चाहूंगा क्योंकि यह पहले से ही निर्मित है।


express@4.17.1 सिर्फ शरीर पार्सर "1.19.0" का उपयोग करता है एक निर्भरता के रूप में
टैग

जवाबों:


234

एक्सप्रेस के पहले के संस्करणों में इसके साथ बहुत सारे मिडलवेयर बंडल होते थे। bodyParser इसके आने वाले बिचौलियों में से एक था। जब एक्सप्रेस 4.0 जारी किया गया था तो उन्होंने एक्सप्रेस से बंडल किए गए मिडलवेयर को हटाने और उन्हें इसके बजाय अलग पैकेज बनाने का फैसला किया। सिंटैक्स तब bodyParser मॉड्यूल को स्थापित app.use(express.json())करने के app.use(bodyParser.json())बाद से बदल गया ।

bodyParser को 4.16.0 रिलीज में वापस एक्सप्रेस में जोड़ा गया था, क्योंकि लोग चाहते थे कि यह पहले की तरह एक्सप्रेस के साथ बंडल हो। इसका मतलब है कि bodyParser.json()यदि आप नवीनतम रिलीज़ पर हैं, तो आपको अब और उपयोग करने की आवश्यकता नहीं है । आप express.json()इसके बजाय उपयोग कर सकते हैं ।

रिलीज का इतिहास 4.16.0 के लिए है यहां उन लोगों के लिए है जो रुचि रखते हैं, और यहां पुल अनुरोध ।


1
क्या हम भी कर सकते हैं app.use(express.urlencoded({ extended: true }));?
रॉबिन मेट्रल

1
आह हाँ, यह भी आप जुड़े पीआर में उल्लेख किया है। महान!
रॉबिन मेट्रल

1
इसका मतलब है कि वे एक ही काम करते हैं?
GNETO DOMINIQUE

क्या होगा अगर मैं दोनों का उपयोग करता हूं // डेटा पार्सिंग ऐप ।use (express.json ()); app.use (express.urlencoded ({विस्तारित: गलत})); क्या यह अच्छा है? क्योंकि यूट्यूब में ट्यूटोरियल मुझसे कहता है दोनों का उपयोग करने
rickvian

1
@ क्रिश्चियन - आप चाहें तो दोनों का उपयोग कर सकते हैं। 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
हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
ब्रेट डेवुडी

8

हाँ दोनों समान हैं।

यदि आप फ़ाइल में जाते हैं node_module / express / lib / express.js

आप मॉड्यूल निर्भरता के तहत देख सकते हैं शरीर पार्सर मॉड्यूल पहले से ही आयात किया गया है

/**
 * Module dependencies.
 */

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

बोडीपरसर मॉड्यूल के अंदर की वस्तुएं और विधियां सुलभ हैं क्योंकि वे विशेष वस्तु मॉड्यूल.एक्सपोर्ट का उपयोग करके निर्यात की जाती हैं

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

यह केवल कॉल करके एक्सप्रेस ऑब्जेक्ट से सुलभ है

express.json()

0

हाँ!! एक्सप्रेस के साथ बॉडी-पार्सर को वापस एकीकृत करने के लिए लोगों की व्यापक राय के कारण, नवीनतम रिलीज बिल्कुल यही करता है। आपको यह मानकर चलना चाहिए कि दोनों एक ही कार्य करते हैं, जो कि आने वाली अनुरोध वस्तु को JSON ऑब्जेक्ट के रूप में पहचानना है। बेझिझक या तो उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.