Node.js- URL-Modul


Das integrierte URL-Modul

Das URL-Modul zerlegt eine Webadresse in lesbare Teile.

Um das URL-Modul einzubinden, verwenden Sie die require() Methode:

var url = require('url');

Analysieren Sie eine Adresse mit der url.parse() Methode, und sie gibt ein URL-Objekt mit jedem Teil der Adresse als Eigenschaften zurück:

Beispiel

Teilen Sie eine Webadresse in lesbare Teile auf:

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-Dateiserver

Jetzt wissen wir, wie man die Abfragezeichenfolge analysiert, und im vorherigen Kapitel haben wir gelernt, wie man Node.js dazu bringt, sich als Dateiserver zu verhalten. Lassen Sie uns die beiden kombinieren und die vom Client angeforderte Datei bereitstellen.

Erstellen Sie zwei HTML-Dateien und speichern Sie sie im selben Ordner wie Ihre node.js-Dateien.

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


Erstellen Sie eine Node.js-Datei, die die angeforderte Datei öffnet und den Inhalt an den Client zurückgibt. Wenn etwas schief geht, werfen Sie einen 404-Fehler aus:

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

Denken Sie daran, die Datei zu initialisieren:

Starten Sie demo_fileserver.js:

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

Wenn Sie die gleichen Schritte auf Ihrem Computer ausgeführt haben, sollten Sie beim Öffnen dieser beiden Adressen zwei unterschiedliche Ergebnisse sehen:

http://localhost:8080/sommer.html

Wird dieses Ergebnis erzeugen:

Summer

I love the sun!

http://localhost:8080/winter.html

Wird dieses Ergebnis erzeugen:

Winter

I love the snow!