مشخصات مقاله
ماژول HTTP در Node.js چیست؟ آموزش کار با آن
ماژول HTTP در Node.js چیست؟
محیط اجرایی Node.js دارای یک ماژول درونی از پیش ساخته شده، به نام HTTP است. این ماژول به شما اجازه میدهد تا سرورهایی بسازید که به درخواستهای HTTP گوش داده و پاسخ مناسب ارسال کنند . این ماژول اطلاعات مورد نظر را از طریق پروتکل HTTP یا Hypertext Transfer Protocol انتقال میدهد. اگر علاقهمند به یادگیری عمیقتر و حرفهایتر Node.js هستید به دوره Node.js مراجعه کنید. در ادامه به آموزش کار با ماژول HTTP میپردازیم.
شروع کار با ماژول HTTP
برای استفاده از ماژول HTTP ابتدا باید آن را به پروژه خود اضافه کنید:
var http = require('http');
آموزش کار با ماژول HTTP به عنوان Web Server
ماژول HTTP می تواند یک وب سرور HTTP ایجاد کرده که به پورت های ارسالی به سرور گوش کرده و پاسخ مناسب برای آن ها ارسال می کند. همانند کد زیر، از متد ()createServer ماژول HTTP، برای ایجاد یک وب سرور HTTP استفاده میکنیم . در این مثال، یک سرور ساده ایجاد میکنیم که به پیامهای ارسالی از طرف کامپیوتر کاربر بر روی پورت 8080 گوش میدهد. هنگامی که کاربر بر روی پورت 8080 پیامی ارسال کند، برنامه پیام "Hello World!" را در خروجی نشان میدهد:
var http = require('http');
//create a server object:
http.createServer(function (req, res) {
res.write('Hello World!'); //نوشتن یک پاسخ به کلاینت
res.end(); //پایان دادن به پاسخ
}).listen(8080); //گوش دادن به پورت 8080
تابعی که درون متد ()createServer تعریف شده است، هر زمان که شخص یا برنامه ای بخواهد به کامپیوتر سرور بر روی پورت 8080 دسترسی پیدا نماید، اجرا خواهد شد.
کد مثال فوق را در یک فایل به نام “demo_http.js” ذخیره کرده و همانند مراحل قبلی، آن را در کنسول خط نرمال بر روی سرور بارگذاری نمایید :
C:\Users\Your Name>node demo_http.js
اگر همانند درس قبلی، مراحل را در کامپیوتر طی کرده و با آدرس http://localhost:8080 ، مرورگر را فراخوانی کنید، خروجی مورد نظر را مشاهده خواهید کرد .
آموزش اضافه کردن HTTP Header
اگر پاسخ (Response) از سرور HTTP را بخواهید به صورت HTML نمایش دهید، بایستی درون کد خود یک هدر HTTP Header را با محتوی زیر در صفحه قرار دهید :
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، وضعیت متد (Code Status) را مشخص کرده که 200 به معنای ok بودن آن است. پارامتر دوم نیز تعیین کننده شی (object) ای است که محتوی پاسخ های response header را شامل می شود.
آموزش خواندن Query String در Node.js
تابعی که درون متد ()http.createServer تعریف شده است، دارای یک پارامتر به نام req بوده که دربرگیرنده پاسخ از سمت کلاینت به صورت یک شی یا object می باشد (http.IncommingMessage Object ).
شی فوق، دارای یک خاصیت به نام “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
اگر مرورگر کامپیوتر را باز کرده و دو آدرس زیر را فراخوانی نمایید، دو پاسخ متفاوت را مشاهده خواهید کرد که متن انتهای url می باشند :
http://localhost:8080/summer
پاسخ:
summer/
http://localhost:8080/winter
پاسخ:
winter/
آموزش تقسیم کردن Query String در Node.js
در زبان Node.js، ماژولهای پیشساختهای وجود دارند که به وسیله آنها میتوانید Query String را به بخشهای مجزا و قابل خواندن تفکیک نمایید. در کد زیر، ابتدا متن Query String موجود در 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_quergsting.js” ذخیره کرده و با کد زیر، در کنسول خط فرمان، بارگذاری نمایید :
C:\Users\Your Name>node demo_querystring.js
سپس آدرس زیر را در خروجی مرورگر درخواست کرده تا خروجی مشاهده شود :
http://localhost:8080/?year=2017&month=July
پاسخ:
2017 July
در بخش مرجع آموزش ماژول url در Node.js، به تشریح کامل کاربرد و متدهای آن پرداخته شده است.