Laravel 12 CRUD (MySQL + JWT) #6: Membuat Controller dan Rute API

Laravel 12 CRUD (MySQL + JWT) 
#6 Membuat Controller dan Rute API

🚦 Controller = logika aplikasi • Rute API = alamat endpoint
🧠 Controller dan Rute API – Otak dan Peta Aplikasi!
Setelah memiliki model, kita perlu controller yang berisi logika (menyimpan, mengambil, dll) dan rute API yang menghubungkan URL dengan controller. Karena kita akan membuat API (bukan halaman web biasa), kita akan menggunakan routes/api.php dan membuat controller khusus API. Yuk mulai! 🚀

Langkah 1: Buat Controller Resource untuk API

1 Buka terminal/CMD di folder proyek siswaapi. Jalankan perintah:

php artisan make:controller SiswaController --api

Perintah --api akan membuat controller dengan method standar untuk API: index, store, show, update, destroy. (Method create dan edit tidak diperlukan karena API tidak punya form view).

File controller akan tersimpan di app/Http/Controllers/SiswaController.php.

💡 Alternatif: Kamu juga bisa menggunakan --resource lalu menghapus method create/edit sendiri, tapi --api lebih praktis untuk API.

📝 Langkah 2: Isi Controller dengan Logika CRUD

2 Buka app/Http/Controllers/SiswaController.php. Kita akan mengisi setiap method dengan logika yang menggunakan model Siswa. Jangan lupa tambahkan use App\Models\Siswa; di bagian atas file.

Berikut isi lengkap controller:

<?php namespace App\Http\Controllers; use App\Models\Siswa; use Illuminate\Http\Request; class SiswaController extends Controller { /** * Display a listing of the resource. */ public function index() { $siswa = Siswa::all(); return response()->json([ 'success' => true, 'data' => $siswa ]); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $request->validate([ 'nama' => 'required|string|max:255', 'kelas' => 'required|string|max:50', 'alamat' => 'required|string', ]); $siswa = Siswa::create([ 'nama' => $request->nama, 'kelas' => $request->kelas, 'alamat' => $request->alamat, ]); return response()->json([ 'success' => true, 'message' => 'Siswa berhasil ditambahkan', 'data' => $siswa ], 201); } /** * Display the specified resource. */ public function show($id) { $siswa = Siswa::find($id); if (!$siswa) { return response()->json([ 'success' => false, 'message' => 'Siswa tidak ditemukan' ], 404); } return response()->json([ 'success' => true, 'data' => $siswa ]); } /** * Update the specified resource in storage. */ public function update(Request $request, $id) { $siswa = Siswa::find($id); if (!$siswa) { return response()->json([ 'success' => false, 'message' => 'Siswa tidak ditemukan' ], 404); } $request->validate([ 'nama' => 'sometimes|string|max:255', 'kelas' => 'sometimes|string|max:50', 'alamat' => 'sometimes|string', ]); $siswa->update($request->only(['nama', 'kelas', 'alamat'])); return response()->json([ 'success' => true, 'message' => 'Siswa berhasil diperbarui', 'data' => $siswa ]); } /** * Remove the specified resource from storage. */ public function destroy($id) { $siswa = Siswa::find($id); if (!$siswa) { return response()->json([ 'success' => false, 'message' => 'Siswa tidak ditemukan' ], 404); } $siswa->delete(); return response()->json([ 'success' => true, 'message' => 'Siswa berhasil dihapus' ]); } }

Penjelasan:

  • index() → mengambil semua data siswa dan mengembalikan JSON.
  • store() → validasi input, lalu simpan data baru. Status 201 (Created).
  • show($id) → cari siswa berdasarkan ID, jika tidak ada return 404.
  • update() → cari siswa, validasi, lalu update.
  • destroy() → hapus siswa jika ada.
💡 Tips: Selalu kembalikan response JSON yang konsisten (misal dengan field success dan data) agar frontend mudah mengolahnya.

Langkah 3: Daftarkan Rute API

3 Buka file routes/api.php. File ini khusus untuk rute API (biasanya diawali dengan /api). Tambahkan rute resource:

use App\Http\Controllers\SiswaController; Route::apiResource('siswa', SiswaController::class);

Atau jika ingin lebih jelas:

Route::apiResource('siswa', SiswaController::class);

Perintah apiResource akan membuat 5 rute:

  • GET /api/siswa → index (daftar siswa)
  • POST /api/siswa → store (tambah siswa)
  • GET /api/siswa/{id} → show (detail siswa)
  • PUT/PATCH /api/siswa/{id} → update (ubah siswa)
  • DELETE /api/siswa/{id} → destroy (hapus siswa)
📌 Catatan: Rute API tidak memerlukan method create dan edit karena tidak ada tampilan form.

Langkah 4: Cek Daftar Rute

4 Untuk memastikan rute sudah terdaftar, jalankan perintah:

php artisan route:list

Cari baris yang mengandung siswa. Kamu akan melihat 5 rute dengan prefix api.

Contoh output:

| POST | api/siswa | siswa.store | App\Http\Controllers\SiswaController@store | api | | GET|HEAD | api/siswa | siswa.index | App\Http\Controllers\SiswaController@index | api | | GET|HEAD | api/siswa/{siswa} | siswa.show | App\Http\Controllers\SiswaController@show | api | | PUT|PATCH| api/siswa/{siswa} | siswa.update | App\Http\Controllers\SiswaController@update | api | | DELETE | api/siswa/{siswa} | siswa.destroy | App\Http\Controllers\SiswaController@destroy | api |
🎉 Controller dan rute API siap! Sekarang kita bisa menguji CRUD menggunakan Postman atau curl. Di artikel berikutnya kita akan menguji endpoint-endpoint ini sebelum memasang autentikasi JWT.

Ringkasan Langkah

  • ✅ Buat controller: php artisan make:controller SiswaController --api
  • ✅ Isi controller dengan logika CRUD (index, store, show, update, destroy).
  • ✅ Tambahkan use App\Models\Siswa; di controller.
  • ✅ Daftarkan rute API di routes/api.php: Route::apiResource('siswa', SiswaController::class);
  • ✅ Cek rute dengan php artisan route:list

📌 Ingat: API endpoint akan diakses dengan prefix /api, misal http://localhost:8000/api/siswa.

(Link akan aktif saat artikel sebelumnya dan selanjutnya terbit)

📘 Laravel 12 CRUD (MySQL + JWT) • #6 Membuat Controller dan Rute API • 🛣️ API siap diuji!
Lebih baru Lebih lama

نموذج الاتصال