Een webserver is een programma dat luistert naar inkomende verzoeken via het netwerk en antwoorden terugstuurt.
Een browser is een client die een verzoek stuurt naar de server.
Voorbeeld:
http://localhost:3000 in je browser.http-module.import http from "http"; HTTP staat voor HyperText Transfer Protocol.
Een HTTP-verzoek is wat de browser naar de server stuurt.
GET /about HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 Accept: text/html Een HTTP-respons is wat de server terugstuurt naar de client.
HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8
Welkom
Dit is mijn website
200 OK betekent dat alles goed gingContent-TypeBelangrijkste HTTP-methoden:
Wij gaan voorlopig vooral werken met GET en POST.
Statuscodes vertellen de browser wat er gebeurde:
We gaan onze eerste webserver maken met Node.js.
http-module3000http importerenNode heeft een ingebouwde http-module voor het maken van servers.
import http from "http" Dit is alles wat je nodig hebt — geen extra installatie nodig!
We gebruiken http.createServer() om een serverobject te maken.
const server = http.createServer((req, res) => {
// Hier reageren we op het verzoek
});
req = request object: info over het verzoekres = response object: hiermee sturen we antwoord terugEen respons heeft een statuscode en headers. Hier stellen we ze in:
const server = http.createServer((req, res) => {
res.statusCode = 200; // 200 = OK
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
});
200)Met res.end() sturen we de body van het antwoord terug.
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('Hallo, wereld!');
}); res.end() sluit de verbinding en stuurt het antwoord naar de client.
Gebruik server.listen() om te bepalen op welke poort je server luistert.
server.listen(3000, () => {
console.log('Server luistert op http://localhost:3000');
}); De callback wordt uitgevoerd zodra de server gestart is.
import http from "http"
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('Hallo, wereld!');
});
server.listen(3000, () => {
console.log('Server luistert op http://localhost:3000
');
});
server.js.node server.js http://localhost:3000 80 = standaard HTTP (adminrechten nodig)3000 of 8080 zijn populair voor developmentctrl + c om de server te stoppenreq.method → HTTP-methode (GET, POST)req.url → pad + querystringreq.headers → verzoekheadersconsole.log(req.method, req.url, req.headers);
Basis: if/else op req.url en req.method.
if (req.method === 'GET' && req.url === '/') {
// home
} else if (req.method === 'GET' && req.url === '/about') {
// about
} else {
// 404
}
200 OK, 404 Niet gevonden, 500 ServerfoutContent-Type bepaalt type responsres.statusCode = 404;
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
res.end('Pagina niet gevonden');
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html; charset=utf-8');
res.end('<h1>Welkom</h1><p>Dit is HTML</p>');