Sobes.tech
Middle

K čemu slouží middleware v aplikacích?

sobes.tech AI

Odpověď od AI

Middleware v webových aplikacích je mezistupeň softwaru, který zpracovává HTTP požadavky a odpovědi. Nachází se mezi webovým serverem a hlavní logikou aplikace.

Hlavní úkoly middleware:

  • Předzpracování požadavku:
    • Autentizace a autorizace uživatele.
    • Parsování přicházejících dat požadavku (JSON, XML atd.).
    • Validace dat požadavku.
    • Logování požadavků.
    • Přidání hlaviček k požadavku.
  • Postprocessing odpovědi:
    • Úprava odpovědi před jejím odesláním klientovi (například přidání hlaviček).
    • Komprese odpovědi.
    • Zpracování chyb (výjimek).
  • Řízení toku provádění: Middleware může přerušit zpracování požadavku a vrátit odpověď v rané fázi (například při absenci oprávnění).

Výhody používání middleware:

  • Modularita: Rozdělení úkolů na samostatné, znovu použitelné komponenty.
  • Flexibilita: Snadné přidávání nebo odstraňování funkcí bez změny hlavní logiky aplikace.
  • Čitelnost kódu: Zlepšení struktury aplikace díky oddělení průřezových operací.
  • Testovatelnost: Samostatné middleware je snazší testovat izolovaně.

V PHP rámcích (jako Laravel, Symfony, Slim) je middleware často implementováno ve formě tříd, které implementují určité rozhraní.

<?php

// Příklad struktury middleware (rozhraní)
interface RequestHandlerInterface {
    public function handle(RequestInterface $request): ResponseInterface;
}

// Příklad implementace middleware (autentizace)
class AuthenticationMiddleware implements RequestHandlerInterface {
    public function handle(RequestInterface $request): ResponseInterface {
        // Kontrola autentizace
        if (!isAuthenticated()) {
            // Pokud uživatel není autentizován, přeruší se provádění a vrátí se chyba
            return new Response(401, [], 'Unauthorized');
        }

        // Pokud je vše v pořádku, předá požadavek dalšímu zpracovateli (nebo hlavní logice aplikace)
        return $this->nextHandler->handle($request);
    }
}