App\Routing
Response
HTTP-Response mit automatisch gesetzten Sicherheitsheadern und Factory-Methoden für JSON, HTML und Redirects.
Jede Response setzt automatisch folgende Sicherheitsheader:
X-Content-Type-Options: nosniff, X-Frame-Options: DENY, Referrer-Policy: strict-origin-when-cross-origin.Factory-Methoden
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
| Response::json(mixed $data, int $status = 200) | static | Erstellt eine JSON-Response. Content-Type wird automatisch auf application/json; charset=UTF-8 gesetzt. Wirft JsonException bei Encoding-Fehlern. |
| Response::html(string $html, int $status = 200) | static | Erstellt eine HTML-Response. |
| Response::redirect(string $url, int $status = 302) | static | Erstellt eine Redirect-Response. Erlaubt nur relative Pfade (/...) oder validierte vollständige URLs. |
Instanz-Methoden
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
| header(string $name, string $value) | static | Setzt oder überschreibt einen HTTP-Header. Gibt $this zurück (fluent). |
| getStatusCode() | int | Gibt den HTTP-Status-Code zurück. |
| getBody() | string | Gibt den Response-Body zurück. |
| send() | never | Sendet Status-Code, alle Header und den Body an den Client. Beendet die Skript-Ausführung (exit). |
Konstruktor
PHP
new Response(
body: string = '',
statusCode: int = 200,
contentType: string = 'text/html; charset=UTF-8'
)
Beispiele
PHP – JSON API
// Erfolg
return Response::json(['users' => $users]);
// Mit Status-Code
return Response::json(['error' => 'Not Found'], 404);
return Response::json(['created' => true], 201);
// Mit extra Header
return Response::json($data)
->header('Cache-Control', 'no-store')
->header('X-Request-Id', uniqid());
PHP – Redirect
// Nach Login weiterleiten
return Response::redirect('/dashboard');
// Nach Formular-Absenden (Post/Redirect/Get)
return Response::redirect('/users?created=1');
// Permanent Redirect
return Response::redirect('/new-url', 301);
// Externe URL (wird validiert)
return Response::redirect('https://example.com');
PHP – HTML mit Template
// HTML-String direkt
return Response::html('<h1>Hallo Welt</h1>');
// Mit Blade-Template
$html = $blade->render('pages.home', ['title' => 'Start']);
return Response::html($html);
// Fehlerseiten
return Response::html($blade->render('errors.404'), 404);
return Response::html($blade->render('errors.500'), 500);
PHP – Spezielle Antworten
// 204 No Content (z.B. nach DELETE)
return new Response('', 204);
// Datei-Download
return (new Response($fileContent, 200, 'application/octet-stream'))
->header('Content-Disposition', 'attachment; filename="export.csv"');
// 429 Too Many Requests
return new Response('Too Many Requests', 429)
->header('Retry-After', '60');