অবশ্যই পুনঃস্থাপন () কে নোড.জেএস দিয়ে প্রকাশ করা হবে?


92

আমার বেশ কয়েকটি এক্সপ্রেস অ্যাপ্লিকেশন রয়েছে এবং আমি দেখতে পাচ্ছি যে কিছু মডিউলগুলিতে 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();
});

উভয় ক্ষেত্রেই কাজ হয় তবে আমি অনেক অনুরোধ চালানোর সময় আমি ফাঁস হওয়া বা ফাইল বিবরণকারী বা এরকম কোনও কিছু সম্পর্কে ভীত। কোনটি "আরও সঠিক"?


4
আমি ভেবেছিলাম res.send()ট্রিগার হয়েছে res.end()- ভুল হতে পারে।
tymeJV

4
@tymeJV আপনি ঠিক বলেছেন, এটি করেন: github.com/visionmedia/express/blob/master/lib/response.js#L154 ;)
জয়কিউ

ধন্যবাদ @ ট্রেভর-সিনিয়র, আমি এটি খুব একই ফাইলটি
দেখছিলাম

@ গ্রেউজে আমি এটি আগে দেখেছিলাম তাই আমার মাথা শুরু হয়েছিল :)। আমি এগিয়ে গিয়ে মন্তব্যটি অন্যদের জন্য আরও কাঠামোগত উত্তরে স্থানান্তরিত করেছি।
জয়কিউ

ওহে. এবং রেস.স্ট্যাটাস (<নতুন>) .জসন () সম্পর্কে কি; এবং আমি আরও একটি প্রশ্ন আছে। আমি যদি সেই কলটি প্রত্যাখ্যান করছি তবে আমার কোন ত্রুটি কোডটি পাঠানো উচিত? ব্যবহারকারী কি তার সীমা অতিক্রম করে?

উত্তর:


121

আপনার প্রশ্নের উত্তর নেই। ফোন 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().

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.