Node.js URL-module


Die ingeboude URL-module

Die URL-module verdeel 'n webadres in leesbare dele.

Om die URL-module in te sluit, gebruik die require() metode:

var url = require('url');

Ontleed 'n adres met die url.parse() metode, en dit sal 'n URL-objek met elke deel van die adres as eienskappe terugstuur:

Voorbeeld

Verdeel 'n webadres in leesbare dele:

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-lêerbediener

Nou weet ons hoe om die navraagstring te ontleed, en in die vorige hoofstuk het ons geleer hoe om Node.js as 'n lêerbediener te laat optree. Kom ons kombineer die twee en bedien die lêer wat deur die kliënt aangevra is.

Skep twee html-lêers en stoor dit in dieselfde vouer as jou node.js-lêers.

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


Skep 'n Node.js-lêer wat die versoekte lêer oopmaak en die inhoud aan die kliënt terugstuur. As iets verkeerd loop, gooi 'n 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);

Onthou om die lêer te begin:

Inisieer demo_fileserver.js:

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

As jy dieselfde stappe op jou rekenaar gevolg het, behoort jy twee verskillende resultate te sien wanneer jy hierdie twee adresse oopmaak:

http://localhost:8080/summer.html

Sal hierdie resultaat lewer:

Summer

I love the sun!

http://localhost:8080/winter.html

Sal hierdie resultaat lewer:

Winter

I love the snow!