এক্সপ্রেস ফাংশনে "রেস" এবং "রেক" পরামিতিগুলি কী কী?


181

নিম্নলিখিত এক্সপ্রেস ফাংশনে:

app.get('/user/:id', function(req, res){
    res.send('user' + req.params.id);
});

কি reqএবং res? তারা কীসের পক্ষে দাঁড়ায়, তাদের অর্থ কী এবং তারা কী করে?

ধন্যবাদ!


1
req== "request"// res=="response"
নিলন

উত্তর:


267

reqHTTP অনুরোধ সম্পর্কিত তথ্য যুক্ত একটি ইভেন্ট যা ইভেন্টটি উত্থাপন করেছিল। এর প্রতিক্রিয়া হিসাবে req, আপনি resপছন্দসই এইচটিটিপি প্রতিক্রিয়াটি ফেরত পাঠাতে ব্যবহার করুন ।

এই পরামিতিগুলির যে কোনও নাম দেওয়া যায়। আপনি যদি কোডটি আরও পরিষ্কার করে থাকেন তবে এটিতে এটি পরিবর্তন করতে পারেন:

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

সম্পাদনা:

বলুন আপনার কাছে এই পদ্ধতি রয়েছে:

app.get('/people.json', function(request, response) { });

অনুরোধটি এই জাতীয় বৈশিষ্ট্যগুলির সাথে একটি বস্তু হবে (কেবলমাত্র কয়েকটি নাম দেওয়ার জন্য):

  • request.urlযা "/people.json"এই নির্দিষ্ট ক্রিয়াকলাপটি শুরু হওয়ার পরে হবে
  • request.method, যা "GET"এই ক্ষেত্রে হবে তাই app.get()কল।
  • এইচটিটিপি শিরোনামের একটি অ্যারে request.headersযেমন আইটেমগুলি ধারণ করে request.headers.accept, যা আপনি কোন ধরণের ব্রাউজার অনুরোধটি তৈরি করেছেন তা নির্ধারণ করতে ব্যবহার করতে পারেন, এটি কোন ধরণের প্রতিক্রিয়াগুলি পরিচালনা করতে পারে, এটি এইচটিটিপি সংক্ষেপণ বুঝতে সক্ষম কিনা ইত্যাদি etc.
  • কোয়েরি স্ট্রিং প্যারামিটার একটি বিন্যাস যদি থাকে সেখানে ছিলেন, এ request.query(যেমন /people.json?foo=barস্থাপিত হবে request.query.fooস্ট্রিং সম্বলিত"bar" )।

এই অনুরোধটির প্রতিক্রিয়া জানাতে, আপনি আপনার প্রতিক্রিয়া তৈরি করতে প্রতিক্রিয়া অবজেক্টটি ব্যবহার করেন। people.jsonউদাহরণটি প্রসারিত করতে :

app.get('/people.json', function(request, response) {
  // We want to set the content-type header so that the browser understands
  //  the content of the response.
  response.contentType('application/json');

  // Normally, the data is fetched from a database, but we can cheat:
  var people = [
    { name: 'Dave', location: 'Atlanta' },
    { name: 'Santa Claus', location: 'North Pole' },
    { name: 'Man in the Moon', location: 'The Moon' }
  ];

  // Since the request is for a JSON representation of the people, we
  //  should JSON serialize them. The built-in JSON.stringify() function
  //  does that.
  var peopleJSON = JSON.stringify(people);

  // Now, we can use the response object's send method to push that string
  //  of people JSON back to the browser in response to this request:
  response.send(peopleJSON);
});

1
শিরোনামগুলির সাথে প্রতিক্রিয়াটি সম্পূর্ণ দেখতে আপনি কার্ল ব্যবহার করতে পারেন
জেনারেলেনারি

3
আপনি চেক আউট করতে পারেন: en.wikedia.org/wiki/Hypertext_Transfer_Protocol । ছদ্মবেশী হচ্ছিল না, ওয়েবের জন্য বিকাশকারী আমাদের সকলেরই এটি জানা উচিত!
TK-421

7
হ্যাঁ এটি দুর্দান্ত ছিল এক্সপ্রেস.জেএস ওয়েবসাইটের মূল পৃষ্ঠায় থাকা উচিত।
অ্যান্টন

এক্সপ্রেসনব - প্রতিক্রিয়া হ'ল অনুরোধের মতো একটি বস্তু, তবে এতে প্রতিক্রিয়া সম্পর্কিত ক্ষেত্র এবং পদ্ধতি রয়েছে। সাধারণত প্রতিক্রিয়াটির প্রেরণ () পদ্ধতি ব্যবহৃত হয়। প্রেরণ () প্রথম যুক্তির জন্য বিভিন্ন ধরণের পুরো গোছা গ্রহণ করে যা HTTP প্রতিক্রিয়া সংস্থায় পরিণত হয় এবং দ্বিতীয় যুক্তিটি হল HTTP প্রতিক্রিয়া কোড।
গ্র্যান্টপ্পার্ক

7
কেউ বিস্তারিত খুঁজছেন করা হয়, তাহলে reqএবং resগঠন, এটা দ্রুতগামী ডক্স বর্ণিত হয়: req: expressjs.com/en/api.html#req , res: expressjs.com/en/api.html#res
akn

25

ডেভ ওয়ার্ডের উত্তরে আমি একটি ত্রুটি লক্ষ্য করেছি (সম্ভবত কোনও সাম্প্রতিক পরিবর্তন?): ক্যোরি স্ট্রিং প্যারামিটারগুলি রয়েছে request.query, নেই request.params। ( Https://stackoverflow.com/a/6913287/166530 দেখুন )

request.params ডিফল্টরূপে রুটে যেকোন "উপাদান উপাদান" এর মান দিয়ে পূর্ণ হয়

app.get('/user/:id', function(request, response){
  response.send('user ' + request.params.id);
});

এবং, যদি আপনি এর বডি পার্সার ( app.use(express.bodyParser());) পোষ্ট'র ফর্মডাটা ব্যবহার করার জন্য এক্সপ্রেসটি কনফিগার করেছেন। ( POST ক্যোয়ারী প্যারামিটারগুলি কীভাবে পুনরুদ্ধার করবেন দেখুন ? )


6

অনুরোধ এবং প্রতিক্রিয়া।

বুঝতে req, চেষ্টা করুন console.log(req);


3
এটি সাহায্য করে না; কনসোলের আউটপুট হ'ল [অবজেক্ট অবজেক্ট]।
জেইসি

আপনি যদি জসন চান, আপনার এইগুলি করতে হবে: কনসোল.লগ (জেএসওএন। স্ট্রিংফাই (req.body);
মেরিডব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.