Middle
Middleware nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Ara katmanlı yazılım (middleware), gelen HTTP isteklerini son işleyiciye (örneğin, denetleyici) ulaşmadan önce ve işleme sonrası çıkan HTTP yanıtlarını işleyen yazılım veya çerçevedir. Çeşitli işlemleri gerçekleştirir: kimlik doğrulama, yetkilendirme, günlük kaydı, istek/yanıt değiştirme vb. Middlewares genellikle bir boru hattı (pipeline) oluşturur; burada her middleware kendi fonksiyonunu yerine getirir ve isteği bir sonraki veya son işleyiciye iletir.
PHP'de PSR-7/PSR-15 kullanılarak örnek:
<?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
{
// Kullanıcı kimlik doğrulama kontrolü
if (!$this->isAuthenticated($request)) {
// Kullanıcı doğrulanmamışsa hata döndür
return new \Slim\Psr7\Response(401); // PSR-7 yanıt örneği
}
// Kullanıcı doğrulanmışsa, isteği bir sonraki işleyiciye ilet
return $handler->handle($request);
}
private function isAuthenticated(ServerRequestInterface $request): bool
{
// Kimlik doğrulama mantığı (başlıklar, oturum vb.)
return true; // Yer tutucu
}
}
class LoggingMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
{
// İşlem öncesi isteğin bilgilerini kaydet
$method = $request->getMethod();
$uri = (string) $request->getUri();
error_log("Handling request: $method $uri");
// İsteği işleyiciye ilet ve yanıtı al
$response = $handler->handle($request);
// İşlem sonrası yanıt bilgilerini kaydet
$statusCode = $response->getStatusCode();
error_log("Response status: $statusCode");
// Yanıtı döndür
return $response;
}
}
// Router'da kullanım örneği (basitleştirilmiş)
// $router->addMiddleware(new AuthenticationMiddleware());
// $router->addMiddleware(new LoggingMiddleware());
// $router->addRoute('GET', '/profile', new ProfileHandler());
Middlewares, istek işleme mantığını modüler hale getirerek kodun daha yeniden kullanılabilir, test edilebilir ve yönetilebilir olmasını sağlar. "Tek sorumluluk ilkesi"ne uygun hareket ederler.