Middle
Middleware nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Aralıq proqram təminatı (middleware) — bu, daxil olan HTTP sorğularını son işləyiciyə (məsələn, controller) çatmadan əvvəl və işləmə sonrası çıxan HTTP cavablarını emal edən proqram və ya çərçivədir. O, müxtəlif fəaliyyətləri yerinə yetirir: autentifikasiya, icazə, qeydiyyat, sorğu/cavabın dəyişdirilməsi və s. Middlewares adətən pipeline (boru xətti) şəklində qurulur, burada hər middleware öz funksiyasını yerinə yetirir və sorğunu növbəti və ya son işləyiciyə ötürür.
PHP-də nümunə (PSR-7/PSR-15 istifadə etməklə):
<?php
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
class AuthenticationMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
// İstifadəçinin autentifikasiyasını yoxlama
if (!$this->isAuthenticated($request)) {
// Əgər istifadəçi autentifikasiya olunmayıbsa, xəta qaytar
return new \Slim\Psr7\Response(401); // PSR-7 cavab nümunəsi
}
// Əgər istifadəçi autentifikasiya olunubsa, sorğunu növbəti işləyiciyə ötür
return $handler->handle($request);
}
private function isAuthenticated(ServerRequestInterface $request): bool
{
// Autentifikasiya yoxlaması üçün məntiq (məsələn, başlıqlar, sessiya və s.)
return true; // Yerləşdirici
}
}
class LoggingMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
// Sorğu işlənməzdən əvvəl məlumatların qeydiyyatı
$method = $request->getMethod();
$uri = (string) $request->getUri();
error_log("Handling request: $method $uri");
// Sorğunu növbəti işləyiciyə ötür və cavabı al
$response = $handler->handle($request);
// İşləmə sonrası cavab haqqında məlumatların qeydiyyatı
$statusCode = $response->getStatusCode();
error_log("Response status: $statusCode");
// Cavabı qaytar
return $response;
}
}
// Router-də istifadə nümunəsi (sadələşdirilmiş)
// $router->addMiddleware(new AuthenticationMiddleware());
// $router->addMiddleware(new LoggingMiddleware());
// $router->addRoute('GET', '/profile', new ProfileHandler());
Middleware-lər sorğu emalı məntiqini bölməyə imkan verir, kodu daha modulyar, təkrar istifadə edilə bilən və sınaqdan keçirməyi asanlaşdırır. Onlar "tək məsuliyyət" prinsipinə əməl edir.