آموزش Nodejs قسمت دوم

آموزش Nodejs قسمت دوم

ماژول http

NodeJS دارای ماژول از پیش ساخته ای درون خود هست که http  نام دارد این ماژول به NodeJS اجازه میدهد اطلاعات را از طریق پروتکل http انتقال دهد. برای استفاده از ویژگی ها و متدهای این ماژول، بایدآن را از طریق متد require() به برنامه خود اضافه کنید

var http = require('http');

 

ماژول http میتواند یک "http سرور" برای گوش دادن به پورت های سرور و پاسخگویی به کلاینت ها ایجاد کند. برای اینکار باید از متد createServer() این ماژول استفاده نمود.

به مثال زیر دقت کنید

var http = require('http');

//create a server object:
http.createServer(function (req, res) {
  res.write('Hello World!'); //write a response to the client
  res.end(); //end the response
}).listen(8080); //the server object listens on port 8080

یک function را به عنوان پارامتر به متد createserver پاس دادیم. (تعریف یک تابع و ارسال آن به عنوان پارامتربه یک متد یکی از ویژگی های جاوا اسکریپت است).

این متد هر زمان که کسی به پورت 8080 دسترسی پیدا میکند اجرا میشود. کد بالا را در فایلی به نام demo_http.js ذخیره کنید و آنرا مانند مثال های پیشین از خط فرمان ویندوز اجرا نمایید

C:\Users\Your Name>node demo_http.js

وقتی که از طریق مرورگر آدرس http://localhost:8080 را فراخوانی کنید نتیجه hello world  را خواهید دید.

هر پاسخی که به سمت کلاینت ها میرود در هدر آن نوع محتوای پاسخ باید مشخص شود بنابراین ما هم چون قرار است محتوای 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);

همانطور که دیدید برای تعیین هدر پاسخ از دستور writeHead  استفاده کردیم. اولین آرگومان متد res.writeHead() کد وضعیت است که ما کد 200 را ارسال کردیم. کدهای وضعیت اعداد استانداردی هستند که هر کدام معنی خاصی برای وب سرورها دارند. کد 200 به معنی درست بودن همه چیز است. پارمتر دوم دربرگیرنده نوع محتوای پاسخ است.

خواندن QueryString ها

تابعی که به عنوان پارمتر به متد http.createServer() ارسال میکنیم دو پارامتر دارد یکی از انها req نام دارد و شی است که اشاره به درخواستی دارد که از کلاینت ارسال شده است.

این شی خاصیتی دارد به نام url که از آن، آدرسی که درخواست از آنجا آمده را میتوان استخراج کرد.

به عنوان مثال دستورات زیر را در فایلی به نام demo_http_url.js ذخیره کنید و سپس فایل را اجرا نمایید تا آدرسی که درخواست شده است را در خروجی مشاهده نمایید

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write(req.url);
  res.end();
}).listen(
8080);

با اجرا دستور node demo_http_url.js از خط فرمان مانند زیر وب سرور اماده دریافت درخواست ها میشود.

C:\Users\Your Name>node demo_http_url.js

حالا اگر در مرورگر خود آدرس http://localhost:8080/summer را درخواست کنید خروجی زیر را خواهید دید

/summer

و اگر آدرس  http://localhost:8080/winter را درخواست کنید خروجی زیر را خواهید دید

/winter

حالا که تونستیم تمام آدرسی که درخواست را ارسال کرده بدست آوریم اگر در آدرس درخواستی چندین QueryString داشته باشیم و بخواهیم آنها را استخراج کنیم چطور باید عمل کنیم.

برای اینکار در NodeJS ماژولی پیش ساخته ای وجود دارد که برای جداسازی QueryString از آدرس درخواستی میتوان از آن استفاده کرد. نام این ماژول url است. و همانطور که میدانید ابتدا باید توسط require آن را به برنامه اضافه کنیم.

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  ذخیره کنید و آن را از خط فرمان اجرا نمایید

C:\Users\Your Name>node demo_querystring.js

دزصورتی که آدرس http://localhost:8080/?year=2017&month=July را در مرورگر درخواست نمایید خورجی زیرا خواهیم داشت

2017 July

در کد بالا ابتدا ماژول url را با دستور var url = require('url'); به برنامه اضافه کردیم. سپس مقدار کوئری استرینگ ها را در متغیر q ریختیم

var q = url.parse(req.url, true).query;

درواقع با دستور req.url که مختص ماژول http هست، کل آدرس را استخراج کردیم و آن را به عنوان پارامتر ورودی به متدهای ماژول url دادیم. و درنهایت با خاصیت های هم نام کوئری استرینگ ها میتوانیم مقادیر کوئری استرینگ ها را بخوانیم

q.year

q.month

درخصوص ماژول url بطور مفصل در آموزش های بعدی صحبت میکنیم. امام برای اینکه دیدی کلی نسبت به نحوه دریافت QueryString ها داشته باشیم فعلا همین مطلب کافیست.

 

مرتضی جنگجو

برنامه نویس fullstack با بیش از 14 سال سابقه کار و همکاری در توسعه و پیاده سازی نرم افزارهای تحت وب با تکنولوژی Net. در شرکتهای بزرگ ایرانی، هلندی، فنلاندی و ترکیه

شبکه های اجتماعی نویسنده

دیدگاه کاربران