برنامه نویسی با nodejs/جلسه ششم/ ماژول URL

سلام دوستای گلم, امروز میخایم در مورد یکی از ماژول های درونی ( Built-in module ) نود جی اس صحبت کنیم پس بریم و شروع کنیم.

ماژول URL دقیقا چه کاری میکنه؟

کاری که این ماژول برای ما میکنه این هست که آدرس های اینترنتی رو به قطعات قابل خوندن تقسیم میکنه.

برای استفاده از اون به صورت زیر عمل کنید:

 var url = require('url');  

شما برای این که یه آدرس رو تجزیه و به قطعات قابل خوندن تبدیل کنید میتونید از متد ( )url.Parse استفاده کنید, این متد آبجکتی رو به شما برمیگردونه که که حاوی هر قسمت از آدرسی هست که بهش دادید, به نمونه کد زیر توجه کنید:

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'

یه تمرین کوچیک D:

ما تو قسمت قبل یاد گرفتیم که چجوری با فایل ها کار کنیم, تو این قسمت هم یاد گرفتیم که چجوری یه رشته رو تجزیه کنیم, حالا بیاین این دوتا رو باهم مخلوط کنیم و یه برنامه کوچیک ترکیبی بسازیم بزنیم بر بدن +_+

دو تا فایل 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> 


حالا یه فایل جاوااسکریپتی بسازید که وقتی درخواست ارسال میشه فایل مناسب با درخواست رو باز کنید و محتوای اون رو به عنوان جواب به سمت کلاینت ارسال کنید(کد زیر)

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); 

اگر یه کم به کد بالا توجه کنید همه چیز کاملا گویا و واضح هست اما یه توضیح کوچیک هم میدم, تو کد بالا بعد از اینکه ماژول های url , http و fs رو require کردیم و آماده استفاده شدن داخل callback function خودمون که بعد از ساخته شدن سرور اجرا میشه اومدیم و آدرس صفحه ای که از درخواست داده شده رو با استفاده از ماژول url تجزیه کردیم و داخل q ریختیم حالا q یه سری prperty داره مثل pathname یا host و search که میتونیم ازشون استفاده کنیم.

در خط بعد اومدیم و از pathname استفاده کردیم و داخل filename ریختیم چون میخایم به عنوان آدرس فایل ازش استفاده کنیم قبلش یه "." هم اضافه کردیم تا summer.html/ رو به summer.html/. تبدیل بشه.

در ادامه هم اومدیم و گفتیم اگر در هنگام خواندن فایل ارور وجود داشت در جواب پیام 404 رو به کلاینت نمایش بده در غیر اینصورت محتوای فایل رو به عنوان جواب ارسال کن D:

خب حالا اگه شما به آدرس http://localhost:8080/summer.html برید نتیجه زیر به شما نمایش داده میشه:

Summer

I love the sun!

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

Winter

I love the snow!



امیدوارم که این آموزش هم مفید واقع شده باشه

منبع: https://www.w3schools.com با کمی