Res.end () এবং res.send () এর মধ্যে পার্থক্য কী?


141

আমি একটি শিক্ষানবিস Express.jsএবং আমি এই দুটি কীওয়ার্ড দ্বারা বিভ্রান্ত: res.end()এবং res.send()

তারা কি একই বা ভিন্ন?


1
আমি মনে করি যে res.endসরল নোড যেখানে res.sendএক্সপ্রেস ফ্রেমওয়ার্ক দ্বারা ব্যবহৃত হয়
মুহাম্মদ উমর ইদ্রিসি

উত্তর:


130

res.send()HTTP প্রতিক্রিয়া প্রেরণ করবে। এর বাক্য গঠনটি হ'ল,

res.send([body])

বডি প্যারামিটার একটি বাফার অবজেক্ট, একটি স্ট্রিং, অবজেক্ট বা অ্যারে হতে পারে। উদাহরণ স্বরূপ:

res.send(new Buffer('whoop'));
res.send({ some: 'json' });
res.send('<p>some html</p>');
res.status(404).send('Sorry, we cannot find that!');
res.status(500).send({ error: 'something blew up' });

দেখুন এই আরও তথ্যের জন্য।

res.end()প্রতিক্রিয়া প্রক্রিয়া শেষ হবে। এই পদ্ধতিটি আসলে নোড কোর থেকে আসে, বিশেষত response.end()পদ্ধতিটি http.ServerResponse। এটি কোনও ডেটা ছাড়াই দ্রুত প্রতিক্রিয়া শেষ করতে ব্যবহৃত হয়। উদাহরণ স্বরূপ:

res.end();
res.status(404).end();

পড়ুন এই আরও তথ্যের জন্য।


68
কিন্তু রেস.এন্ড আসলে রিসেন্ডের মতো কাজ করতে পারে, আপনি প্রতিক্রিয়া বডি হিসাবে যুক্ত করতে একটি স্ট্রিং আর্গুমেন্ট পাস করতে পারেন। তার উপরে, রেস.সেন্ড এছাড়াও প্রতিক্রিয়া শেষ করে। সুতরাং তারা কীভাবে কার্যকরীভাবে আলাদা?
সালট্টিহাশ

31
@ psytech140 Jmar77 এখানে একটি দুর্দান্ত প্রতিক্রিয়া জানিয়েছিল : "আপনি যদি পুনরায় বিক্রয় করতে (একটি) স্ট্রিংটি পাস করেন তবে এটি স্বয়ংক্রিয়ভাবে এইচটিএমএল এর একটি কনটেন্ট-টাইপ অনুমান করে থাকে। প্রতিক্রিয়া প্রবাহ, সুতরাং বিষয়বস্তুর জন্য কোনও অনুমান করা হয় না। "
abagh0703

এটিকে নিখুঁতভাবে উত্সাহিত করতে হয়েছিল কারণ আমি কখনও ব্যবহার করি নি expressতবে শিরোনাম থেকে মনে হয়েছে - কেউ কিছু প্রেরণ করে, কেউ কিছু শেষ করে দেয় ... 'দ্বিগুণ।
ড্যারেন বার্ট্রাপ-কুক

তবে আপনি যদি res.send()কিছুই না দিয়ে কেবল ব্যবহার করেন। এই মত কাজ করে res.end()?
সিএমসিডিগ্রাগনকাই


108

আমি মাঝে কিছু মূল পার্থক্য একটি সামান্য বিট বেশি জোর করতে চাই res.end()& res.send()প্রতিক্রিয়া হেডার থেকে সম্মান এবং কেন তারা গুরুত্বপূর্ণ সঙ্গে।

১. পুনঃ বিক্রয় () আপনার আউটপুটটির কাঠামো যাচাই করবে এবং সেই অনুসারে শিরোনামের তথ্য সেট করবে।


    app.get('/',(req,res)=>{
       res.send('<b>hello</b>');
    });

এখানে চিত্র বর্ণনা লিখুন


     app.get('/',(req,res)=>{
         res.send({msg:'hello'});
     });

এখানে চিত্র বর্ণনা লিখুন

যেখানে রেস.এন্ড () সহ আপনি কেবল পাঠ্য দিয়ে সাড়া দিতে পারবেন এবং এটি " সামগ্রী-প্রকার " সেট করবে না

      app.get('/',(req,res)=>{
           res.end('<b>hello</b>');
      }); 

এখানে চিত্র বর্ণনা লিখুন

২. res.send () প্রতিক্রিয়া শিরোনামে "ETag" বৈশিষ্ট্য সেট করবে

      app.get('/',(req,res)=>{
            res.send('<b>hello</b>');
      });

এখানে চিত্র বর্ণনা লিখুন

Tag এই ট্যাগটি গুরুত্বপূর্ণ কেন?
ইটাগ এইচটিটিপি রেসপন্স শিরোনাম একটি সংস্থার নির্দিষ্ট সংস্করণের জন্য সনাক্তকারী। এটি ক্যাশেগুলিকে আরও দক্ষ হতে দেয় এবং ব্যান্ডউইথকে বাঁচায়, কারণ কোনও বিষয়বস্তু পরিবর্তন না হলে কোনও ওয়েব সার্ভারকে পূর্ণ প্রতিক্রিয়া প্রেরণের প্রয়োজন হয় না।

res.end() এই শিরোনাম বৈশিষ্ট্য সেট করবে না


4
এটি আমার মতে উত্তর গৃহীত হবে ... আরও পার্থক্য তৈরি করা হয়েছে প্রকৃত পার্থক্যের উপর যা আপনার কাজের দিনটিকে নষ্ট করতে পারে / বিষয়বস্তু ছাড়াই / প্রতিক্রিয়া ছাড়াই আলোচনার পরিবর্তে ...
টমাস

13

res.send () যা করে তা হ'ল res.writ , res.setHeeda এবং res.end প্রয়োগ করা
এটি আপনি যা ডেটা প্রেরণ করেন এবং সঠিক শিরোনাম সেট করে তা পরীক্ষা করে check

তারপরে এটি পুনরায় লেখার সাথে ডেটা প্রবাহিত করে এবং শেষে এটি অনুরোধের শেষ সেট করতে res.end ব্যবহার করে।

কিছু ক্ষেত্রে রয়েছে যা আপনি নিজেই এটি করতে চাইবেন উদাহরণস্বরূপ, আপনি যদি স্ট্রিম ফাইল বা একটি বৃহত ডেটা সেট সেট করতে চান তবে এই ক্ষেত্রে আপনি নিজের দ্বারা শিরোনাম সেট করতে চান এবং স্ট্রিমটি বজায় রাখতে পুনরায় রাইটারটি ব্যবহার করতে পারবেন প্রবাহিত।


0

resএটি একটি এইচটিটিপ্রেসপোনস অবজেক্ট যা আউটগোইংমেজেজ থেকে প্রসারিত। এইচটিটিপি প্রতিক্রিয়া এবং ঘনিষ্ঠ সংযোগ প্রেরণের জন্য আউটগোয়িংমেসেজ দ্বারা প্রয়োগ করা res.sendকলগুলি res.end। আমরা কোড এখানে দেখতে

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