URL moduli
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 URLprotocol: 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 raqamipathname: URL manzilining yo‘l bo‘limisearch: So‘rov stringi, shu jumladan, boshlovchi ?query: Yo ?siz so‘rov stringi yoki tahlil qilingan so‘rov obyektihash: 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!
