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!