Node.js HTTP-module
De ingebouwde HTTP-module
Node.js heeft een ingebouwde module genaamd HTTP, waarmee Node.js gegevens kan overdragen via het Hyper Text Transfer Protocol (HTTP).
Gebruik de
require()
methode om de HTTP-module op te nemen:
var http = require('http');
Node.js als een webserver
De HTTP-module kan een HTTP-server maken die naar serverpoorten luistert en een reactie teruggeeft aan de client.
Gebruik de createServer()
methode om een HTTP-server te maken:
Voorbeeld
var http = require('http');
//create a server object:
http.createServer(function
(req, res) {
res.write('Hello World!'); //write a response to the
client
res.end(); //end the response
}).listen(8080); //the
server object listens on port 8080
De functie die in de http.createServer()
methode is doorgegeven, wordt uitgevoerd wanneer iemand toegang probeert te krijgen tot de computer op poort 8080.
Sla de bovenstaande code op in een bestand met de naam "demo_http.js", en start het bestand:
Start demo_http.js:
C:\Users\Your Name>node demo_http.js
Als u dezelfde stappen op uw computer hebt gevolgd, ziet u hetzelfde resultaat als in het voorbeeld: http://localhost:8080
Een HTTP-header toevoegen
Als het antwoord van de HTTP-server als HTML moet worden weergegeven, moet u een HTTP-header met het juiste inhoudstype opnemen:
Voorbeeld
var http = require('http');
http.createServer(function
(req, res) {
res.writeHead(200,
{'Content-Type': 'text/html'});
res.write('Hello
World!');
res.end();
}).listen(8080);
Het eerste argument van de res.writeHead()
methode is de statuscode, 200 betekent dat alles in orde is, het tweede argument is een object dat de antwoordheaders bevat.
Lees de queryreeks
De functie die wordt doorgegeven aan de http.createServer()
heeft een req
argument dat het verzoek van de client vertegenwoordigt, als een object (http.IncomingMessage-object).
Dit object heeft een eigenschap genaamd "url" die het deel van de url bevat dat na de domeinnaam komt:
demo_http_url.js
var http = require('http');
http.createServer(function
(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(req.url);
res.end();
}).listen(8080);
Sla de bovenstaande code op in een bestand met de naam "demo_http_url.js" en start het bestand:
Start demo_http_url.js:
C:\Users\Your Name>node demo_http_url.js
Als je dezelfde stappen op je computer hebt gevolgd, zou je twee verschillende resultaten moeten zien bij het openen van deze twee adressen:
Zal dit resultaat opleveren:
/summer
Zal dit resultaat opleveren:
/winter
De queryreeks splitsen
Er zijn ingebouwde modules om de querystring eenvoudig te splitsen in leesbare delen, zoals de URL-module.
Voorbeeld
Splits de queryreeks in leesbare delen:
var http = require('http');
var url = require('url');
http.createServer(function (req, res) {
res.writeHead(200,
{'Content-Type': 'text/html'});
var q = url.parse(req.url,
true).query;
var txt = q.year + " " +
q.month;
res.end(txt);
}).listen(8080);
Sla de bovenstaande code op in een bestand met de naam "demo_querystring.js" en start het bestand:
Start demo_querystring.js:
C:\Users\Your Name>node demo_querystring.js
Het adres:
Zal dit resultaat opleveren:
2017 July
Lees meer over de URL-module in het hoofdstuk Node.js URL-module .