- मैं एक्सप्रेस में आने वाले POST अनुरोध को सुनना चाहता हूं।
- मैं पाइप के लिए एक और सर्वर
- मैं एक्सप्रेस हैंडलर के अंदर प्रतिक्रिया प्राप्त करना चाहते हैं (मैं न रेस धारा व्यक्त करने के लिए पाइप प्रतिक्रिया करना चाहते हैं)
के लिए करने के लिए इस अनुरोध को चाहते हैं अब मैं कोड निम्नलिखित है:एक्सप्रेस req.pipe() काम नहीं करता
app.post('server1',function(req,res,next){
var request = require('request');
req.pipe(request.post('server2')).pipe(res);
}
तो यह काम नहीं करता है - अनुरोध सर्वर 2 तक भी पाइप नहीं किया गया है - मैंने इसे चेक किया है और कोई आने वाला अनुरोध नहीं है।
मैं 1 & 2 इस तरह अंक हल:
var bodyParser = express.bodyParser();
app.use(function(req,res,next){
if(req.path == '/server1' && req.method == 'POST') {
return next();
}
else {
bodyParser(req,res,next);
}
});
नहीं बहुत अच्छा है, लेकिन यह काम करता है - यह सिर्फ एक मार्ग (पोस्ट/server1) के लिए bodyparser अक्षम करता है।
लेकिन मैं अभी भी पाइप अनुरोध से json प्रतिक्रिया शरीर प्राप्त करने के लिए पता नहीं कैसे - मैं कोड निम्नलिखित है:
app.post('/server1',function(req,res,next){
var request = require('request');
var pipe = req.pipe(request.post('/server2'));
pipe.on('end',function(){
var res2 = pipe.response;
console.log(res2);
});
});
res2
वस्तु सही statusCode और हेडर और इतने पर है, लेकिन यह शरीर में नहीं है - मैं इसे res2
ऑब्जेक्ट से कैसे प्राप्त कर सकता हूं? /server2
json में कुछ डेटा देता है, लेकिन मुझे पता है कि प्रतिक्रिया से इसे पढ़ने के लिए न ...
इसका शायद मतलब है कि 'req' को पूरा करने के लिए पहले से ही पढ़ा जा चुका है - इसके [' 'end''] (http://nodejs.org/api/stream.html#stream_event_end) - संभवतः 'bodyParser द्वारा() '। एक धारा * उसके बाद एक नई 'पाइप()' के लिए * पुनरारंभ नहीं होगी *। –
ठीक है तो मैं इसे पूरा करने के लिए कैसे पढ़ा जा सकता हूं? या मैं पहले से पढ़े गए अनुरोध से स्ट्रीम कैसे बना सकता हूं? मुझे पाइप अनुरोध करना है क्योंकि फ़ाइल अपलोड है ... – user606521
मैं अपना प्रश्न संपादित करता हूं - 'बॉडी पार्सर' पर आपकी टिप्पणी ने मुझे बहुत मदद की - मुझे बस अंतिम बिंदु (3) को हल करने की आवश्यकता है। – user606521