آموزش Nodejs قسمت چهارم

آموزش Nodejs قسمت چهارم

ماژول url

قبلا درخصوص ماژول url صحبت کردیم. میدانیم که این ماژول میتواند بخش های مختلف آدرس های وب را استخراج کند. برای استفاده از این ماژول از دستور require  استفاده میکنیم.

var url = require('url');

تجزیه آدرس های وب با استفاده از متد url.parse() انجام میشود این متد یک شی از نوع url بر میگرداند که قسمتهای مختلف آن را میتوان از ویژگی های (properties) موجود در این شی بدست آورد.

مثال زیر نحوه اینکار را به روشنی نشان میدهد

var url = require('url');
var adr = 'http://localhost:8080/default.htm?year=2017&month=february';
var q = url.parse(adr, true);

console.log(q.host); //returns 'localhost:8080'
console.log(q.pathname); //returns '/default.htm'
console.log(q.search); //returns '?year=2017&month=february'

var qdata = q.query; //returns an object: { year: 2017, month: 'february' }
console.log(qdata.month); //returns 'february'

همانطور که میبینید ویژگی های جالبی برای استخراج قسمتهای مختلف یک آدرس اینترنتی در این متد وجود دارد که کار را برای برنامه نویس بسیار راحت میکند.

خب حالا که می توانیم آدرس های وب را تجزیه کنیم و با توجه به اینکه در فصول قبل هم دریافتیم که چطور از NodeJS یک فایل سرور بسازیم پس اجازه بدین تا با ترکیب این دو، برنامه ای بنویسیم که کاربران نام فایلی را یک آدرس وب ارسال نمایند و سرور محتوای آن فایل را به سمت کلاینت ارسال نماید

برای شروع، دو فایل html به نام های summer.html  و winter.html با محتوای زیر ایجاد میکنیم.

محتوای فایل summer.html

<!DOCTYPE html>
<html>
<body>
<h1>Summer</h1>
<p>I love the sun!</p>
</body>
</html>

محتوای فایل winter.html

<!DOCTYPE html>
<html>
<body>
<h1>Winter</h1>
<p>I love the snow!</p>
</body>
</html>

حالا در همان مسیری که این دو فایل را ایجاد کردیم فایل NodeJS را نیز ایجاد میکنیم تا نام صفحه ی html موجود در آدرس وب درخواستی را بتوانیم بخوانیم. و محتوای فایل همنام با  نام این صفحه را بتوانیم به کلاینت ارسال نماییم.

فایل demo_fileserver.js را ایجاد کرده و محتوای زیر را در آن قرار دهید.

var http = require('http');
var url = require('url');
var fs = require('fs');

http.createServer(function (req, res) {
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;
  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/html'});
      return res.end("404 Not Found");
    } 
    res.writeHead(
200, {'Content-Type': 'text/html'});
    res.write(data);
   
return res.end();
  });
}).listen(
8080);

خب با توجه با آموزشهای دروس قبل و دانشی که داریم دیگر نیازی به توضیح مجدد کد بالا نیست. با اجرا فایل NodeJS میتوانیم نتیجه کارمان را ببینیم . دستور زیر را در خط فرمان ویندوز اجرا میکنیم.

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

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

Summer

I love the sun!

و اگر آدرس http://localhost:8080/winter.html را درخواست نمیایم محتوای فایل winter.html را خواهیم دید

Winter

I love the snow!

مرتضی جنگجو

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

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

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