URL moduli


ULASHISH

O‘rnatilgan URL moduli

URL moduli URL manzilini aniqlash va tahlil qilish uchun yordamchi dasturlarni taqdim etadi.

U veb-manzilni o‘qilishi mumkin bo‘lgan qismlarga bo‘lish, URL manzillarini yaratish va turli URL komponentlarini boshqarish uchun ishlatilishi mumkin.

Ishni boshlash

URL modulini kiritish uchun require() usulidan foydalaning.

Zamonaviy Node.js (v10.0.0+) da siz eski API yoki yangiroq URL sinfidan (WHATWG URL API) foydalanishingiz mumkin:

Misol

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

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

url.parse() usuli bilan manzilni tahlil qiling va u manzilning har bir qismiga ega URL obyektini xossa sifatida qaytaradi:

Misol

Veb-manzilni o‘qilishi mumkin bo‘lgan qismlarga bo‘ling:

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);
O‘zingiz sinab ko‘ring »

URLni tahlil qilish va formatlash

URL obyekt xususiyatlari

URLni tahlil qilganda siz quyidagi xususiyatlarga ega URL obyektini olasiz:

  • href : Tahlil qilingan to‘liq URL
  • protocol : Protokol sxemasi (masalan, 'http:')
  • host : Xostning to‘liq qismi (masalan, 'example.com:8080')
  • hostname : Xost nomi qismi (masalan, 'example.com')
  • port : Agar ko‘rsatilgan bo‘lsa, port raqami
  • pathname : URL manzilining yo‘l bo‘limi
  • search : So‘rov stringi, shu jumladan, boshlovchi ?
  • query : Yo ?siz so‘rov stringi yoki tahlil qilingan so‘rov obyekti
  • hash : fragment identifikatori, shu jumladan #

Eski API va WHATWG URL API

Misol

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'
O‘zingiz sinab ko‘ring »

URLSearchParams API

URLSearchParams API URL so‘rov stringi bilan ishlash uchun yordamchi usullarni taqdim etadi:

Misol

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

// Add a parameter
params.append('city', 'Stavanger');
// Delete a parameter
params.delete('age');
// Convert to string
console.log(params.toString());
Misolni ishga tushirish »

Node.js fayl serveri

Endi biz so‘rov stringini qanday tahlil qilishni bilamiz va oldingi bobda Node.js fayl serveri sifatida o‘zini qanday tutishini bilib oldik.

Keling, ikkalasini birlashtirib, mijoz so‘ragan faylga xizmat qilaylik.

Ikkita html fayl yarating va ularni node.js fayllaringiz bilan bir xil papkada saqlang.

yoz.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>


So‘ralgan faylni ochadigan va tarkibni qaytaradigan Node.js faylini yarating mijozga. Agar biror narsa noto‘g‘ri bo‘lsa, 404 xatosini yuboring:

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

Faylni ishga tushirishni unutmang:

demo_fileserver.js dasturini ishga tushiring:

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

Agar siz kompyuteringizda bir xil amallarni bajargan bo‘lsangiz, ikkitasini ko‘rishingiz kerak bu ikki manzilni ochishda turli natijalar:

http://localhost:8080/summer.html

Bu natijani beradi:

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

http://localhost:8080/winter.html

Bu natijani beradi:

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

Eng yaxshi amaliyotlar

1. Har doim URL manzillarini tekshiring va tozalang

Misol

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. URL manzillarini xavfsiz tarzda qurish

Misol

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. So‘rovlar parametrlari bilan ishlash

Misol

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

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

// Get all parameters
console.log(url.searchParams.toString()); // 'q=node.js&lang=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&lang=en&page=2'


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!