اذهب إلى المحتوى

السؤال

نشر

يوجد معاملات أساسية مع كل طلب أو مسار في إطار العمل express.js وهما req , res :

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

ماهي وظيفة هذه المعاملات؟ وهل يمكنني تغيير اسمائها إلى شيء آخر؟ وهل استخدامها معاً ضروري أو يمكن الاستغناء عنها في هذا التابع function ؟

Recommended Posts

  • 1
نشر

req هو كائن يحتوي على معلومات حول طلب HTTP الذي أثار الحدث. استجابة للطلب ، يمكنك استخدام res لإعادة إرسال استجابة HTTP المطلوبة, يمكن تسمية هذه المعلمات بأي شيء. لنفترض انه لدينا هذا المسار

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

سيكون المتغير request كائن لديه هذه الخصائص على سبيل المثال:

  • request.url: والذي سيكون "/Hello.json" عند طلب هذا الإجراء المحدد
  • request.method: والذي سيكون "GET" في هذه الحالة ، ومن هنا يأتي استدعاء app.get ().
  • request.headers: مصفوفة من HTTP headers ، تحتوي على عناصر مثل request.headers.accept ، والتي يمكنك استخدامها لتحديد نوع المتصفح الذي قدم الطلب ، ونوع الاستجابات التي يمكنه التعامل معها ، وما إذا كان قادر على فهم ضغط HTTP أم لا ، إلخ.
  • request.query: مصفوفة من معاملات سلسلة طلب البحث ، إن وجدت, على سبيل المثال
    /Hello.json?foo=bar
    request.query.foo يحتوي على السلسلة "bar".

للرد على هذا الطلب ، يمكنك استخدام كائن response لبناء ردك كالمثال الآتي

app.get('/Hello.json', function(request, response) {
  response.contentType('application/json');

  var users = [
    { name: 'Mohammed', age: '20' },
    { name: 'Ali', age: '19' },
    { name: 'Sami', age: '18' }
  ];

  var usersJSON = JSON.stringify(users);

  response.send(usersJSON);
});

 

  • 0
نشر

req: يحتوي هذا على شكل الطلب http الذي تقوم بارسالة اثناء التطبيق.ومن  أجل استقبال الرد من الطلب السابق، تستخدم res والذي تحتوي على اجابة طلب ال http.

يمكن اعادة تسمية هذه المتغيرات الي اي اسم تريده كما نرى في الكود التالي:

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

اما عن استخدامها داخل app.get فهو فقط بتمريرهم داخل الطلب  كما نري في الكود التالي:

app.get('/people.json', function(request, response) {
  // هنا توضح شكل المحتوى حتي يستطيع المتصفح فهمه
  //  هذا هو شكل المحتوى على الشكل json
  response.contentType('application/json');

  //في الطبيعي، يكون العائد من قاعدة بيانات، لكن هنا يمكننا ان نضعها بشكل يدوى حتى نوضح الفكرة
  var people = [
    { name: 'Ahmed', location: 'Egypt' },
    { name: 'Mohammed', location: 'Jordan' },
    { name: 'mostafa', location: 'Sodan' }
  ];

  // حيث أن الطلب المرسل على صيغه json
  //  للتعامل مع البيانات القادمة JSON.stringify() يمكن أن نستخدم الدالة الداخلية  
  var peopleJSON = JSON.stringify(people);

  // هنا يمكننا ارسال النتائج التي عادت الينا الي المتصفح لعرضها

  response.send(peopleJSON);
});

 

  • 0
نشر

req & res هي كائنات لتمرير طلب واستجابة HTTP 

  • req : هو كائن يحوي مجموعة من البيانات عند طلب HTTP مثل : parameters - queries - بيانات الحقول الكوكيز وغيرها 
  • res : تستخدم لإعادة ارسال الـ HTTP عند الإستتجابة عادة ما تكون بهذا الشكل : res.send, res.render, res.redirect

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...