Middleware is software die tussen een binnenkomend request en de code die het uiteindelijk beantwoordt zit, en die de gedeelde stappen afhandelt die bijna elk request nodig heeft. Dingen als authenticatie checken, loggen, de request-body uitlezen en beveiligingsheaders toevoegen leven hier, zodat de hoofdcode zich op de eigenlijke taak kan richten.
Een mooie vergelijking is de beveiliging op een vliegveld. Voor je je gate bereikt, passeert elke passagier dezelfde controles: ticketscan, ID-check, bagagescreening. Niemand slaat ze over, en het gatepersoneel mag aannemen dat iedereen die aankomt dat allemaal al heeft gehad. Middleware is die rij controleposten voor een webrequest: elke laag doet één check en stuurt het request door naar de volgende. Tegen de tijd dat het request bij je back-end-logica komt, is het saaie maar belangrijke werk al gedaan.
Je ziet middleware het duidelijkst in webframeworks. In Express.js stapel je bijvoorbeeld middleware-functies op volgorde, en elk request loopt er één voor één doorheen. Een veelgebruikte keten regelt eerst de authenticatie, zodat ongeautoriseerde verzoeken de beschermde code nooit bereiken. Daarna komt vaak een rate limiter, dan een JSON-parser, en pas dan je route.
De volgorde is precies wat mensen verkeerd doen. Zet je de body-parser na de route die de body nodig heeft, dan is de data er simpelweg nog niet. En een laag die vergeet het request door te geven, laat elke aanroep hangen. De keten is dus krachtig maar onverbiddelijk. Van boven naar beneden lezen vertelt je precies wat er met een request gebeurt.
Bij TopDevs gebruiken we middleware om beveiliging en logging consistent te houden over een hele applicatie, zodat die regels één keer worden geschreven en overal gelden in plaats van in elk endpoint te worden gekopieerd.