Response

Het Response object is een object dat door Express wordt aangemaakt en wordt meegegeven aan de callback functie van een route. Het bevat methodes om de response van de server te configureren. Je kan bv. de inhoud van de response, de headers, de status code, etc. instellen.

We hebben dit object al gebruikt om bijvoorbeeld de content type van de response te configureren, de status code te wijzigen, response te sturen, etc. We zien hier nog een aantal nuttige methodes.

Redirect

Een redirect is een HTTP response die instructies bevat voor de client om een nieuwe request te sturen naar een andere URL. Een redirect wordt gebruikt om bv. een gebruiker door te sturen naar een andere pagina. De client wordt automatisch doorverwezen naar de nieuwe URL.

Om een redirect te sturen, gebruik je de method res.redirect:

app.get("/redirect",(req,res)=>{
    res.redirect("https://google.com");
})

Soms is het interessant om een redirect te sturen naar de vorige pagina. Dit kan je doen met de method res.redirect en de waarde back:

app.get("/redirect",(req,res)=>{
    res.redirect("back");
})

Dit kan je bijvoorbeeld gebruiken om een gebruiker door te sturen na het verzenden van een POST request.

Status Code

De status code van een HTTP response geeft aan of de request geslaagd is of niet. De status code wordt automatisch ingesteld op 200 (OK) wanneer je een response verstuurd. Je kan de status code wijzigen met de method res.status:

app.get("/status",(req,res)=>{
    res.status(404);
    res.send("Not found");
})

Wil je direct een response sturen met een bepaalde status code, gebruik dan de method res.sendStatus:

app.get("/status",(req,res)=>{
    res.sendStatus(404);
})

Hier een tabel met de meest gebruikte status codes:

Status Code
Omschrijving
Wanneer te gebruiken

200

OK

De request is geslaagd

201

Created

De request is geslaagd en een nieuwe resource is aangemaakt

204

No Content

De request is geslaagd, maar er is geen inhoud om te tonen

400

Bad Request

De request is niet correct

401

Unauthorized

Missende of niet geslaagde authorisatie

403

Forbidden

De client mag deze resource niet bekijken

404

Not Found

De resource is niet gevonden

500

Internal Server Error

Er is een fout opgetreden op de server

Het is belangrijk om de juiste status code te gebruiken zodat de client weet of er iets mis is gegaan of niet. En als er iets mis is gegaan, kan de client bv. een foutmelding tonen.

Response headers

Net zoals bij een request, kan je ook bij een response headers instellen. Dit kan je doen met de method res.set:

app.get("/headers",(req,res) => { 
    res.set("Content-Type","text/html");
    res.send("<h1>Hello World</h1>");
})

Als je een response verstuurd, kan je geen headers meer wijzigen. Als je dit toch probeert, krijg je de volgende foutmelding:

Error: Can"t set headers after they are sent.

Bijvoorbeeld:

app.get("/headers", (req, res) => {
    res.send("<h1>Hello World</h1>");
    res.set("Content-Type", "text/html");
    // Error: Can"t set headers after they are sent.
});

Dit komt omdat de headers al verstuurd worden door de send functie. Je kan dit oplossen door de headers te configureren voor je de response verstuurd:

app.get("/headers",(req,res)=>{
    res.set("Content-Type","text/html");
    res.send("<h1>Hello World</h1>");
})

Response Type

De response type wordt automatisch ingesteld op text/html wanneer je een response verstuurd. Je kan de response type wijzigen met de method res.type:

app.get("/type",(req,res)=>{
    res.type("text/plain");
    res.send("Hello World");
})

Je kan ook de response type instellen op een van de volgende waarden: html, text, json, xml. Als je een van deze waarden gebruikt, wordt de content type automatisch ingesteld op de juiste waarde:

Response Type
Verkorte notatie
Omschrijving

text/html

html

HTML

text/plain

text

Plain text

application/json

json

JSON

application/xml

xml

XML

Last updated