93 lines
2.0 KiB
Markdown
93 lines
2.0 KiB
Markdown
# 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');
|
|
```
|