Node.js URL Module

Node.js URL

অন্তর্নির্মিত URL মডিউল

ইউআরএল মডিউল ইউআরএল রেজোলিউশন এবং পার্সিংয়ের জন্য ইউটিলিটি প্রদান করে।

এটি একটি ওয়েব ঠিকানাকে পঠনযোগ্য অংশে বিভক্ত করতে ব্যবহার করা যেতে পারে, ইউআরএল গঠন করতে এবং বিভিন্ন ইউআরএল উপাদানগুলিকে ম্যানিপুলেট করতে।

URL পার্সিং

ইউআরএলগুলিকে পঠনযোগ্য অংশে বিভক্ত করা

URL গঠন

নতুন URL তৈরি করা হচ্ছে

ইউআরএল এলিমেন্ট ম্যানিপুলেট করা

বিভিন্ন URL অংশ পরিবর্তন

শুরু হচ্ছে

একটি URL ব্লক যোগ করতে, প্রয়োজন() পদ্ধতি ব্যবহার করুন।

আধুনিক Node.js (v10.0.0+), আপনি ঐতিহ্যগত API বা নতুন URL শ্রেণী (WHATWG URL API) ব্যবহার করতে পারেন:

উদাহরণ

// Using the legacy API
const url = require('url');

// Using the modern URL class (WHATWG API)
const { URL } = require('url');

উদাহরণ

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

console.log(q.host);
console.log(q.pathname);
console.log(q.search);

let qdata = q.query;
console.log(qdata.month);

💡বর্ণনা:

url.parse() , URL .

ইউআরএল পার্সিং এবং ফরম্যাটিং

URL অবজেক্টের বৈশিষ্ট্য

আপনি যখন একটি URL পার্স করেন, তখন আপনি নিম্নলিখিত বৈশিষ্ট্য সহ একটি URL অবজেক্ট পাবেন:

বৈশিষ্ট্য ব্যাখ্যা উদাহরণ
href সম্পূর্ণ পার্স করা URL 'http://localhost:8080/default.htm?year=2017'
protocol নৈতিক পরিকল্পনা 'http:'
host সম্পূর্ণ হোস্ট এলাকা 'localhost:8080'
hostname হোস্টনাম ক্ষেত্র 'localhost'
port পোর্ট নম্বর নির্দিষ্ট করা হলে '8080'
pathname URL এর পাথ সেগমেন্ট '/default.htm'
search নেতৃস্থানীয়? ক্যোয়ারী স্ট্রিং সহ '?year=2017&month=february'
query ? ক্যোয়ারী স্ট্রিং বা পার্সড কোয়েরি অবজেক্ট ছাড়াই 'year=2017&month=february'
hash # সহ খণ্ড শনাক্তকারী '#section'

ঐতিহ্যগত API বনাম WHATWG URL API

উদাহরণ

const { URL } = require('url');

// Using the WHATWG URL API (recommended for new code)
const myURL = new URL('https://example.org:8080/p/a/t/h?query=string#hash');
console.log(myURL.hostname); // 'example.org'
console.log(myURL.pathname); // '/p/a/t/h'
console.log(myURL.searchParams.get('query')); // 'string'

// Using the legacy API
const parsedUrl = require('url').parse('https://example.org:8080/p/a/t/h?query=string#hash');
console.log(parsedUrl.host); // 'example.org:8080'
console.log(parsedUrl.query); // 'query=string'

🚀পরামর্শ:

WHATWG URL API নতুন কোডের জন্য সুপারিশ করা হয়েছে কারণ এটি আধুনিক ওয়েব মানগুলির সাথে সামঞ্জস্যপূর্ণ এবং আরও ভাল নিরাপত্তা বৈশিষ্ট্য রয়েছে৷

URLSearchParams API

URLSearchParams API URL এর ক্যোয়ারী স্ট্রিং এর সাথে কাজ করার জন্য ইউটিলিটি পদ্ধতি প্রদান করে:

উদাহরণ

const { URL, URLSearchParams } = require('url');

const myURL = new URL('https://example.com/?name=Kai&age=30');
const params = new URLSearchParams(myURL.search);

// Get a parameter
console.log(params.get('name')); // 'Kai'

// Add a parameter
params.append('city', 'Stavanger');

// Delete a parameter
params.delete('age');

// Convert to string
console.log(params.toString()); // 'name=Kai&city=Stavanger'

Node.js ফাইল সার্ভার

এখন আমরা জানি কিভাবে একটি ক্যোয়ারী স্ট্রিং পার্স করতে হয়, এবং শেষ অধ্যায়ে আমরা শিখেছি কিভাবে Node.js কে একটি ফাইল সার্ভার হিসাবে কাজ করতে হয়।

আমরা দুটিকে একত্রিত করি এবং ক্লায়েন্টের অনুরোধকৃত ফাইল সরবরাহ করি।

দুটি HTML ফাইল তৈরি করুন এবং আপনার node.js ফাইলগুলির মতো একই ফোল্ডারে সেভ করুন।

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>

demo_fileserver.js:

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

http.createServer(function (req, res) {
  let q = url.parse(req.url, true);
  let 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);

ফাইল শুরু করুন:

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

🌐ফলাফল:

আপনি যদি আপনার কম্পিউটারে একই পদক্ষেপগুলি অনুসরণ করেন তবে এই দুটি ঠিকানা খোলার সময় আপনার দুটি ভিন্ন ফলাফল দেখতে হবে:

http://localhost:8080/summer.html- এই ফলাফল তৈরি করে:

<h1>Summer</h1>
<p>I love the sun!</p>

http://localhost:8080/winter.html- এই ফলাফল তৈরি করে:

<h1>Winter</h1>
<p>I love the snow!</p>

সর্বোত্তম অনুশীলন

1. সর্বদা ইউআরএল চেক করুন এবং পরিমার্জিত করুন

উদাহরণ

function isValidHttpUrl(string) {
  try {
    const url = new URL(string);
    return url.protocol === 'http:' || url.protocol === 'https:';
  } catch (err) {
    return false;
  }
}

console.log(isValidHttpUrl('https://example.com')); // true
console.log(isValidHttpUrl('ftp://example.com')); // false

2. সুরক্ষিতভাবে ইউআরএল কনফিগার করা

উদাহরণ

const { URL } = require('url');

// Safe way to construct URLs
function createProfileUrl(domain, username) {
  return new URL(`/users/${encodeURIComponent(username)}`, domain).href;
}

console.log(createProfileUrl('https://example.com', 'johndoe'));
// 'https://example.com/users/johndoe'

3. ক্যোয়ারী প্যারামিটার পরিচালনা করা

উদাহরণ

const { URL } = require('url');

// Parse URL with query parameters
const url = new URL('https://example.com/search?q=node.js⟨=en');

// Get all parameters
console.log(url.searchParams.toString()); // 'q=node.js⟨=en'

// Get specific parameter
console.log(url.searchParams.get('q')); // 'node.js'

// Check if parameter exists
console.log(url.searchParams.has('lang')); // true

// Add new parameter
url.searchParams.append('page', '2');
console.log(url.href);
// 'https://example.com/search?q=node.js⟨=en&page=2'

🔒নিরাপত্তা নোট:

  • সর্বদা ব্যবহারকারীর ইনপুট URL চেক করুন
  • ইউআরএল নির্মাণের জন্য encodeURIComponent() ব্যবহার করুন
  • সঠিক ত্রুটি হ্যান্ডলিং বাস্তবায়ন
  • ইউআরএল রিডাইরেক্টের সাথে কাজ করার সময় সতর্ক থাকুন

অনুশীলন করুন

হোস্টনাম এবং পোর্ট ধারণকারী URL অবজেক্টের সঠিক বৈশিষ্ট্যের নাম টেনে আনুন এবং ড্রপ করুন।

The ______ property.

host
✓ ঠিক আছে! হোস্ট অ্যাট্রিবিউটে হোস্টনেম এবং পোর্ট থাকে (যেমন, 'localhost:8080')।
hostname
✗ ভুল! হোস্টনাম অ্যাট্রিবিউটে শুধুমাত্র হোস্টনাম থাকে, পোর্ট নয়।
origin
✗ ভুল! অরিজিন অ্যাট্রিবিউটে প্রোটোকল, হোস্ট এবং পোর্ট রয়েছে, কিন্তু এটি শুধুমাত্র WHATWG URL API-তে উপলব্ধ।
address
✗ ভুল! ঠিকানা একটি URL অবজেক্টের একটি বৈধ বৈশিষ্ট্য নয়।