ما هو الموديل المدمج (The Built-in HTTP Module)

ما هو الموديل المدمج (The Built-in HTTP Module) 
module  يعني  الوحدة 
تحتوي مكتبة Node.js على وحدة نمطية (built-in module) مضمنة تسمى HTTP ، والتي تسمح لـ Node.js بنقل البيانات عبر بروتوكول نقل النص التشعبي (HTTP).
لتضمين  module HTTP ، استدعي الدالة require('http')  :
var http = require('http');
خادم ويب (Node.js as a Web Server)
 يمكن لوحدة HTTP إنشاء خادم HTTP يستمع إلى منافذ الخادم ويعطي استجابة للعميل.
 استخدم  الدالة createServer () لإنشاء خادم HTTP:
var http = require('http');
//إنشاء كائن الخادم:
http.createServer(function (req, res) {
  res.write('Hello World!'); //اكتب ردًا على العميل
  res.end(); //إنهاء الرد 
}).listen(8080); //فتح الخادم على المنفذ  8080
سيتم تنفيذ الدالة (fuction)التي تم تمريرها إلى الاسلوب (method) http.createServer () ، عندما يحاول شخص ما الوصول إلى الكمبيوتر على المنفذ 8080. 
 احفظ الكود أعلاه في ملف يسمى "demo_http.js" ، وابدأ تشغيل الملف:
C:\Users\Your Name>node demo_http.js
افتح المتصفح على الرابط التالي http://localhost:8080
اضافة HTTP الى رأس الصفحة
 إذا كان من المفترض أن يتم عرض الاستجابة من خادم HTTP بتنسيق HTML ، فيجب عليك تضمين رأس HTTP بنوع المحتوى الصحيح:اي "Content-Type text/html" 
مثال
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('Hello World!');
  res.end();
}).listen(8080);
شرح الدالة res.writeHead(المتغير الاول ,الالمتغير الثاني)
  • المتغير الاول هو رمز الحالة ، 200 يعني أن كل شيء على ما يرام ، 
  • المتغير الثاني عبارة عن كائن(object) يحتوي على رؤوس الاستجابة.
التقاط القيم المرسلة على الرابط 
تحتوي الدالة التي تم تمريرها إلى http.createServer () على  البرامتر req التي تمثل الطلب من العميل ، ككائن (كائن http.IncomingMessage).

هذا الكائن له خاصية تسمى "url" والتي تحتوي على جزء عنوان url الذي يأتي بعد اسم المجال او النطاق:
مثال
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write(req.url);
  res.end();
}).listen(8080);
احفظ الكود في ملف باسم "demo_http_url.js" وشغله في موجه الاوامر
C:\Users\Your Name>node demo_http_url.js
افتح المتصفح على الرابط التالي http://localhost:8080/hellourl
تقسيم القيم المرسلة على الرابط
توجد وحدات مدمجة لتقسيم سلسلة الاستعلام بسهولة إلى أجزاء قابلة للقراءة ، مثل وحدة الرابط (url). التقاط قيم الرابط وتقسيمها
مثال
التقاط القيم المرسلة من الفورم على الرابط :
var http = require('http');
var url = require('url');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  var q = url.parse(req.url, true).query;
  var txt = q.year + " " + q.month;
  res.end(txt);
}).listen(8080);
احفظ الكود في ملف باسم "demo_querystring.js" وشغله في موجه الاوامر cmd :
C:\Users\Your Name>node demo_querystring.js
والان افتح متصفح الويب على الرابط التالي: http://localhost:8080/?year=2021&month=July النتيجة
2021 July