Routing & responses.
Route eksplisit, parameter URL, middleware dan respons JSON.
Route dan parameter
Semua route ditulis sebelum return $router. Handler menerima Request dan array parameter.
use DL\{Request, Response};
$router->get('/hello/{name}', static function (Request $request, array $params): Response {
return Response::json(['message' => 'Hello ' . $params['name']]);
});HTTP methods
Gunakan get atau post; add mendukung metode lainnya. Semua metode selain GET, HEAD dan OPTIONS diperiksa CSRF. HEAD memakai handler GET; metode salah menghasilkan 405 dan header Allow.
Middleware
Middleware menerima request dan fungsi next. Urutan array adalah urutan eksekusi masuk.
use DL\{Auth, Response};
$router->get('/account', fn() => Response::json(['user_id'=>Auth::id()]), [Auth::protect(...)]);Input dan headers
Request::input berisi POST atau JSON, bukan query GET. Periksa query dari $_GET dengan validasi tipe. wantsJson mengenali Accept application/json dan path /api/. JSON dibatasi 64 KiB; JSON tidak valid menghasilkan 400.
Error dan redirect
Gunakan HttpException untuk status HTTP yang disengaja. Redirect menerima path lokal.
throw new DL\HttpException(404, 'Article not found.');
// Pada handler setelah mutasi berhasil:
return DL\Response::redirect(url('/account'));