Request & Response
Membaca input pengguna, mengirim berbagai jenis respons, redirect dengan flash message, dan JSON.
Objek Request
Illuminate\Http\Request membungkus semua yang dikirim klien: URL, metode, header, query string, body form/JSON, berkas, cookie, dan pengguna yang login. Dapatkan lewat type-hint di method controller.
Membaca input
$request->input('nama'); // dari body ATAU query; bawaan: input('nama', 'tamu')
$request->query('halaman', 1); // khusus query string (?halaman=2)
$request->post('nama'); // khusus body
$request->all(); // semua input sebagai array
$request->only(['nama', 'harga']); // hanya kunci tertentu
$request->except(['password']); // semua kecuali
$request->has('nama'); // ada kuncinya?
$request->filled('nama'); // ada DAN tidak kosong?
$request->boolean('aktif'); // "1","true","on","yes" → true
$request->integer('harga'); // dikonversi ke int
$request->string('nama')->trim(); // sebagai objek Stringable
$request->date('tanggal'); // sebagai Carbon
Input JSON (Content-Type: application/json) dibaca dengan cara yang sama — $request->input('nama'); untuk nested: $request->input('alamat.kota').
Informasi lain dari request
$request->method(); // 'POST'
$request->path(); // 'produk/5'
$request->url(); // URL tanpa query
$request->fullUrl(); // dengan query
$request->ip(); // IP klien
$request->header('Accept');
$request->bearerToken(); // token dari "Authorization: Bearer ..."
$request->user(); // pengguna yang login (atau null)
$request->expectsJson(); // klien minta JSON?
$request->file('foto'); // berkas unggahan
$request->hasFile('foto');
Jenis respons
return 'teks'; // string → text/html
return ['pesan' => 'ok']; // array → JSON otomatis
return $produk; // model → JSON
return view('produk.show', ['produk' => $produk]); // HTML dari Blade
return response()->json(['pesan' => 'Dibuat', 'id' => 7], 201); // JSON + status
return response('Tidak ditemukan', 404);
return response()->noContent(); // 204
return response()->download($path); // unduh berkas
return response($isi)->header('X-Contoh', 'nilai');
Redirect & flash message
return redirect('/produk');
return redirect()->route('produk.index');
return redirect()->route('produk.show', $produk); // Laravel mengambil kunci dari model
return back(); // kembali ke halaman sebelumnya
return back()->withInput(); // kembalikan input untuk old()
return redirect()->route('produk.index')->with('status', 'Produk disimpan');
with() menyimpan flash data di session: tersedia hanya untuk satu request berikutnya, cocok untuk pesan sukses. Tampilkan di Blade: @if (session('status')) {{ session('status') }} @endif.
Abort & error HTTP
abort(404); // halaman 404
abort(403, 'Tidak punya izin');
abort_if(! $user->aktif, 403);
abort_unless($request->user()->isAdmin(), 403);
API: kode status yang tepat
| Situasi | Kode |
|---|---|
| Berhasil | 200 |
| Dibuat | 201 |
| Tanpa isi (hapus) | 204 |
| Input tak valid | 422 (Laravel memakainya untuk validasi) |
| Belum login | 401 |
| Tidak berhak | 403 |
| Tidak ada | 404 |