Node.js URL-module
De ingebouwde URL-module
De URL-module splitst een webadres op in leesbare delen.
Gebruik de require()
methode om de URL-module op te nemen:
var url = require('url');
Parseer een adres met de url.parse()
methode en het zal een URL-object retourneren met elk deel van het adres als eigenschappen:
Voorbeeld
Splits een webadres in leesbare delen:
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'
Node.js-bestandsserver
Nu weten we hoe we de querystring moeten ontleden, en in het vorige hoofdstuk hebben we geleerd hoe we Node.js kunnen laten gedragen als een bestandsserver. Laten we de twee combineren en het door de klant gevraagde bestand serveren.
Maak twee html-bestanden en sla ze op in dezelfde map als uw node.js-bestanden.
zomer.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>
Maak een Node.js-bestand dat het gevraagde bestand opent en de inhoud terugstuurt naar de client. Als er iets misgaat, gooi dan een 404-fout:
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);
Vergeet niet om het bestand te starten:
Start demo_fileserver.js:
C:\Users\Your Name>node demo_fileserver.js
Als je dezelfde stappen op je computer hebt gevolgd, zou je twee verschillende resultaten moeten zien bij het openen van deze twee adressen:
http://localhost:8080/summer.html
Zal dit resultaat opleveren:
Summer
I love the sun!
http://localhost:8080/winter.html
Zal dit resultaat opleveren:
Winter
I love the snow!