मैं अपने Node.js सर्वर पर भेजे गए एक पोस्ट अनुरोध के फॉर्म-डेटा को पुनर्प्राप्त नहीं कर सकता। मैं सर्वर कोड और पोस्ट अनुरोध नीचे रख दिया है (क्रोम में डाकिया का उपयोग करके भेजा):नोड.जेएस (एक्सप्रेस और बॉडी पार्सर के साथ): पोस्ट अनुरोध से फॉर्म-डेटा प्राप्त करने में असमर्थ
पोस्ट अनुरोध
POST /api/login HTTP/1.1
Host: localhost:8080
Cache-Control: no-cache
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="userName"
jem
----WebKitFormBoundaryE19zNvXGzXaLvS5C
NodeJS सर्वर कोड
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(bodyParser());
app.all('/*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type,accept,access_token,X-Requested-With');
next();
});
var port = process.env.PORT || 8080; // set our port
var router = express.Router(); // get an instance of the express Router
router.get('/', function(req, res) {
res.json({ message: 'I am groot!' });
});
// Login
router.route('/login')
.post(function(req, res){
console.log('Auth request recieved');
// Get the user name
var user = req.body.userName;
var aToken = getToken(user);
res.json({
'token':'a_token'
});
});
app.use('/api', router);
app.listen(port);
प्रवेश विधि req.body.userName प्राप्त करने का प्रयास करता है - हालांकि, req.body हमेशा खाली रहता है। मैंने SO पर अन्य मामलों को ऐसे व्यवहार का वर्णन किया है लेकिन संबंधित उत्तरों में से कोई भी यहां लागू नहीं हुआ है।
मदद करने के लिए धन्यवाद।
मुद्दा यह है कि अनुरोध का शरीर [एक 'मल्टीपार्ट' संदेश] (http://en.wikipedia.org/wiki/MIME#Multipart_messages) और 'बॉडी-पार्सर' मॉड्यूल पार्सिंग डेटा का समर्थन नहीं करता है वह प्रारूप [इसके रीडमेम में दूसरा अनुच्छेद] (https://www.npmjs.org/package/body-parser#readme) अन्य मॉड्यूल के लिए सुझाव प्रदान करता है जिनका आप उपयोग कर सकते हैं। –
या, यदि 'POST' अनुरोध में डेटा को' मल्टीपार्ट 'की आवश्यकता नहीं है, तो इसे ['x-www-form-urlencoded'] के रूप में भेजा जा सकता है (http://en.wikipedia.org/wiki/Percent- एन्कोडिंग # The_application.2Fx-www फार्म-urlencoded_type)। यह प्रारूप है कि 'bodyParser.urlencoded() 'parses। –
दरअसल, इंगित करने के लिए धन्यवाद। HTTP का मेरा ज्ञान सीमित है, इसलिए फॉर्म-urlencoded के बारे में पता नहीं था। इस तरह, मेरे नोड.जेएस छोटे कोणीय अग्रभाग से पोस्ट अनुरोधों को सही तरीके से संभाल सकते हैं। सहायता के लिए धन्यवाद! – Jem