Sobes.tech
Middle

Waarvoor wordt middleware gebruikt in applicaties?

sobes.tech AI

Antwoord van AI

Middleware in webapplicaties is tussensoftware die HTTP-verzoeken en -antwoorden verwerkt. Het bevindt zich tussen de webserver en de hoofdlogica van de applicatie.

De belangrijkste taken van middleware:

  • Voorverwerking van het verzoek:
    • Authenticatie en autorisatie van de gebruiker.
    • Parsing van inkomende verzoekgegevens (JSON, XML, enz.).
    • Validatie van de verzoekgegevens.
    • Logging van verzoeken.
    • Toevoegen van headers aan het verzoek.
  • Nabewerking van het antwoord:
    • Aanpassen van het antwoord voordat het naar de client wordt gestuurd (bijvoorbeeld headers toevoegen).
    • Compressie van het antwoord.
    • Foutafhandeling (uitzonderingen).
  • Beheer van de uitvoeringstroom: Middleware kan de verwerking van het verzoek onderbreken en een antwoord op een vroeg stadium teruggeven (bijvoorbeeld bij gebrek aan toegangsrechten).

Voordelen van het gebruik van middleware:

  • Modulariteit: Verdeling van taken in onafhankelijke, herbruikbare componenten.
  • Flexibiliteit: Gemakkelijk functionaliteit toevoegen of verwijderen zonder de hoofdlogica van de applicatie te wijzigen.
  • Leesbaarheid van de code: Verbetering van de structuur van de applicatie door het scheiden van cross-cutting concerns.
  • Testbaarheid: Individuele middleware is gemakkelijker te testen in isolatie.

In PHP-frameworks (zoals Laravel, Symfony, Slim) wordt middleware vaak geïmplementeerd in de vorm van klassen die een specifieke interface implementeren.

<?php

// Voorbeeld van middleware-structuur (interface)
interface RequestHandlerInterface {
    public function handle(RequestInterface $request): ResponseInterface;
}

// Voorbeeld van middleware-implementatie (authenticatie)
class AuthenticationMiddleware implements RequestHandlerInterface {
    public function handle(RequestInterface $request): ResponseInterface {
        // Authenticatiecontrole
        if (!isAuthenticated()) {
            // Als de gebruiker niet geauthenticeerd is, wordt de uitvoering onderbroken en wordt een fout geretourneerd
            return new Response(401, [], 'Unauthorized');
        }

        // Als alles in orde is, wordt het verzoek doorgestuurd naar de volgende handler (of hoofdlogica van de applicatie)
        return $this->nextHandler->handle($request);
    }
}