Res.end () को node.js के साथ व्यक्त किया जाना चाहिए?


89

मैं कई है एक्सप्रेस अनुप्रयोगों, और मुझे लगता है कि कुछ मॉड्यूल में, res.end()एक अनुरोध हैंडलर (बाद के अंत में कहा जाता है res.sendया res.json), जबकि अन्य लोगों में, यह कहा जाता है नहीं है।

उदाहरण के लिए:

app.get('/test', function(req, res) {
    res.send('Test', 200);
});

या:

app.get('/test', function(req, res) {
    res.send('Test', 200);
    res.end();
});

दोनों मामले काम करते हैं, लेकिन मैं लीक के बारे में डरता हूं या फाइल डिस्क्रिप्टर या ऐसा कुछ करता हूं, जब मैं कई अनुरोधों को चलाता हूं। कौन सा "अधिक सही" है?


2
मैंने सोचा कि res.send()ट्रिगर किया res.end()- गलत हो सकता है।
tymeJV

3
@tymeJV आप सही हैं, यह करता है: github.com/visionmedia/express/blob/master/lib/response.js#L154 ;)
JayQuerie.com

धन्यवाद @ ट्रेवर-सीनियर, मैं इसे देख रहा था कि यह एक ही फाइल है और मैंने इसे नहीं देखा है ...
greuze

@greuze मैंने देखा है इससे पहले कि मैं एक सिर शुरू था :)। मैं आगे बढ़ा और टिप्पणी को दूसरों के लिए अधिक संरचित उत्तर में स्थानांतरित किया।
JayQuerie.com

नमस्ते। और res.status (<any>) के बारे में क्या। json (); और मेरा एक और सवाल भी है। अगर मैं उस कॉल को अस्वीकार कर रहा हूं तो मुझे कौन सा त्रुटि कोड वापस भेजना चाहिए? जैसे उपयोगकर्ता उसकी सीमा से अधिक है?
बजे

जवाबों:


120

आपके प्रश्न का उत्तर नहीं है। आप कॉल करने के लिए की जरूरत नहीं है res.end(), अगर आप कहते हैं res.send()। आपके लिए res.send()कॉल करता res.end()है।

/Lib/response.js से लिया गया , यहां res.send()फ़ंक्शन का अंत है :

  //. . .
  // respond
  this.end(head ? null : body);
  return this;
}

4
शायद मेरी यादें आखिरकार बेहतर हो रही हैं :)
tymeJV

8

एक उदाहरण जहां आपको एंड () फ़ंक्शन को कॉल करना होगा जब आप डाउनलोड करने के लिए फ़ाइल के रूप में बफर भेजते हैं।

res.write(buffer);
res.end();

5

res.end([data] [, encoding])

प्रतिक्रिया प्रक्रिया को समाप्त करता है। यह विधि वास्तव में नोड कोर से आती है , विशेष रूप से response.end() method of http.ServerResponse. उपयोग बिना किसी डेटा के प्रतिक्रिया को जल्दी से समाप्त करने के लिए।

यदि आपको डेटा के साथ प्रतिक्रिया करने की आवश्यकता है, तो इसके बजाय तरीकों का उपयोग करें res.send() and res.json().

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