# HTTP-Modul Dokumentation

## Übersicht

Das HTTP-Modul stellt Komponenten für die Verarbeitung von HTTP-Anfragen und -Antworten bereit.

## Hauptkomponenten

### Request

Repräsentiert eine HTTP-Anfrage mit Methoden zum Zugriff auf:
- HTTP-Methode (`getMethod()`)
- Pfad (`getPath()`)
- Query-Parameter (`getQueryParams()`)
- Request-Body
- Headers

### Response

Repräsentiert eine HTTP-Antwort mit:
- Status-Code (`getStatusCode()`)
- Headers
- Body

### Middleware

Ein Interface für HTTP-Middleware-Komponenten, die die Request-Verarbeitung verändern können:

```php
interface Middleware
{
    public function process(Request $request, callable $next): Response;
}
```

**Beispiel-Middleware:**
```php
class AnalyticsMiddleware implements Middleware
{
    public function __construct(
        private readonly Analytics $analytics
    ) {}

    public function process(Request $request, callable $next): Response
    {
        // Request tracken
        $this->analytics->track('http_request', [
            'method' => $request->getMethod(),
            'path' => $request->getPath(),
        ]);

        // Request weiterleiten
        $response = $next($request);

        // Response tracken
        $this->analytics->track('http_response', [
            'status_code' => $response->getStatusCode(),
        ]);

        return $response;
    }
}
```

## Integration mit anderen Modulen

- **Router**: Routing von HTTP-Requests zu Controllers
- **Analytics**: Tracking von HTTP-Requests und -Responses
- **Validation**: Validierung von Request-Daten

## Middlewares registrieren

In der Anwendungsklasse:

```php
$this->addMiddleware(LoggingMiddleware::class);
$this->addMiddleware(AnalyticsMiddleware::class);
$this->addMiddleware(AuthenticationMiddleware::class);
```

## Responses erzeugen

```php
// JSON-Response
return new JsonResponse(['success' => true]);

// HTML-Response
return new HtmlResponse('<html><body>Hello World</body></html>');

// Redirect
return new RedirectResponse('/dashboard');
```
