All pages
Powered by GitBook
1 of 4

11. Router en Middleware

Theorie

Bekijk voor het labo aan te vangen eerst de volgende topics:

  • Router

  • Middleware

Router Combi

We gaan een combinatie oefening maken van drie voorgaande oefeningen: Math Service, News Paper Search en Contact Form.

Je mag zelf kiezen van welk project je als begin wilt gebruiken, je mag ook helemaal opnieuw beginnen en een nieuw project maken.

Maak 3 verschillende routers aan, die elk een van de bovenstaande oefeningen uitvoeren. De routers moeten de volgende paden hebben:

  • /math

  • /newspaper

  • /contact

Je mag zelf kiezen welke naam je de bestanden geeft, maar zorg ervoor dat je de bestanden in een aparte map zet, bijvoorbeeld routers.

De werking van de applicatie moet hetzelfde blijven als de oefeningen die je hebt gekozen, maar dan verdeeld over drie routers.

Zorg dat de / route van je applicatie een overzicht geeft van de drie verschillende routes die je hebt gemaakt.

alt text

Utility Middleware

Maak een nieuw project aan met de naam utility-middleware en installeer de express en de ejs module.

Schrijf een middleware die een aantal handige functies bevat. De middleware moet de volgende functies bevatten:

  • caesar: een functie die een string en een shift meekrijgt en de string versleuteld met de Caesar cipher. De shift is een getal dat aangeeft hoeveel plaatsen de letters in het alfabet verschoven moeten worden. Bijvoorbeeld: caesar('abc', 1) geeft 'bcd'.

  • reverse: een functie die een string meekrijgt en de string omdraait. Bijvoorbeeld: reverse('abc') geeft 'cba'.

  • shorten: een functie die een string en een lengte meekrijgt en de string inkort tot de lengte. Als de string langer is dan de lengte, moet er een ... achter de string geplaatst worden. Bijvoorbeeld: shorten('abcde', 3) geeft 'abc...'.

Zorg dat deze middleware beschikbaar is voor alle routes van de applicatie en test de functies uit in je ejs bestanden.

Rate Limiter

Maak een nieuw project aan met de naam rate-limiter-middleware en installeer de express en de ejs module.

Maak een nieuwe middleware aan die een rate limiter implementeert. Een rate limiter zorgt ervoor dat een bepaalde route maar om de zoveel tijd aangeroepen kan worden. In eerste instantie willen we dat een route maar 1 keer per seconde aangeroepen kan worden. Als dit gebeurd is, moet de gebruiker een foutmelding krijgen (bijvoorbeeld een 429 status code). Je mag gebruik maken van 1 globale variabele om de tijd bij te houden wanneer de route voor het laatst is aangeroepen.

Maak een nieuwe route aan op / van de applicatie die een GET request afhandelt. De route rendert een simpele Hello World pagina.

Gebruik de rate limiter middleware om ervoor te zorgen dat de route maar 1 keer per seconde aangeroepen kan worden.

Uitbreiding

Breid de rate limiter middleware uit zodat je de tijd tussen de requests kan instellen. Dit kan je bijvoorbeeld doen door een parameter mee te geven aan de middleware. Als de parameter niet wordt meegegeven, moet de standaard tijd 1 seconde zijn.

Je kan bijvoorbeeld de volgende error meegeven aan de gebruiker:

Too many requests. You can do only one request per 10 seconds.

Breid de rate limiter middleware uit zodat deze ook rekening houdt met de IP van de gebruiker. Dit kan je bijvoorbeeld doen door een object bij te houden waarin je de tijd bijhoudt wanneer de route voor het laatst is aangeroepen per IP.