RESTful API
RESTful API (Representational State Transfer) di Laravel berfokus pada arsitektur pemrograman yang digunakan untuk menjembatani pertukaran data antar-sistem atau aplikasi yang berbeda melalui protokol HTTP secara efisien, ringan, dan bersifat stateless. Dalam implementasinya, RESTful API memanfaatkan metode standardisasi HTTP Request seperti GET untuk mengambil data, POST untuk membuat data baru, PUT/PATCH untuk memperbarui data, dan DELETE untuk menghapus data dari database. Berbeda dengan aplikasi web konvensional yang mengembalikan tampilan halaman HTML (Blade templates), RESTful API dirancang khusus untuk mengirim dan menerima respons mentah dalam format JSON (JavaScript Object Notation), lengkap dengan kode status HTTP yang valid (seperti 200 OK untuk keberhasilan, 201 Created untuk data baru, atau 404 Not Found jika data tidak ada). Dengan memisahkan logika pemrosesan data di sisi backend (menggunakan API Controllers dan rute api.php) dari sisi frontend, arsitektur RESTful API ini menjadi pondasi utama yang memungkinkan aplikasi Laravel kamu terintegrasi secara fleksibel dengan berbagai platform modern, mulai dari aplikasi mobile Android/iOS hingga aplikasi berbasis Single Page Application (SPA) seperti Vue, React, atau Angular.
Kodingan route GET beserta dengan fungsinya
<<<public function index()
{
$kelas = Kelas::all();
return response()->json($kelas, 200);
}
Fungsinya :
Fungsi index() di atas terhubung dengan Route GET (/api/kelas). Fungsi ini berfungsi untuk membaca atau mengambil seluruh data kelas yang tersimpan di dalam database secara dinamis. Proses pengambilan data menggunakan ORM Eloquent Laravel melalui syntax Kelas::all(), yang otomatis mengubah data tabel menjadi kumpulan objek. Setelah data berhasil ditarik, data tersebut dikembalikan (return) dalam bentuk format data mentah JSON dengan kode status HTTP 200 OK agar bisa dibaca dan digunakan oleh aplikasi client (seperti Postman, Aplikasi Mobile, maupun Frontend).
Kodingan route POST beserta dengan fungsinya
<<<public function store(Request $request)
{
$request->validate([
'nama_kelas' => 'required',
'jurusan' => 'required',
'lokasi_ruangan' => 'required',
'nama_wali_kelas' => 'required',
]);
$kelas = Kelas::create($request->all());
return response()->json([
'success' => true,
'message' => 'Data kelas berhasil ditambahkan!',
'data' => $kelas
], 201);
}
Fungsinya :
Fungsi store(Request $request) terhubung dengan Route POST (/api/kelas). Fungsi ini memiliki peran untuk menerima kiriman data baru dari client/Postman, memvalidasinya, lalu menyimpannya ke dalam database. $request->validate([...]): Berfungsi untuk menyaring data input yang dikirim. Jika salah satu field (nama_kelas, jurusan, lokasi_ruangan, atau nama_wali_kelas) kosong, Laravel akan otomatis menolak request tersebut demi menjaga integritas data. Kelas::create($request->all()): Perintah ORM Eloquent yang digunakan untuk memasukkan seluruh data inputan yang valid ke dalam tabel database secara instan dan otomatis. return response()->json([...], 201): Berfungsi untuk mengembalikan respons balik ke Postman dalam format JSON yang membawa status sukses, pesan informasi, dan objek data yang baru dibuat, disertai kode status HTTP 21 Created.
Kodingan route Patch beserta dengan fungsinya
<<<public function update(Request $request, $id)
{
$request->validate([
'nama_kelas' => 'required',
'jurusan' => 'required',
'lokasi_ruangan' => 'required',
'nama_wali_kelas' => 'required',
]);
$kelas = Kelas::find($id);
if (!$kelas) {
return response()->json([
'success' => false,
'message' => 'Data kelas tidak ditemukan.'
], 404);
}
$kelas->update($request->all());
$methodUsed = $request->isMethod('put') ? 'PUT' : 'PATCH';
$message = $methodUsed === 'PUT' ? 'Seluruh data berhasil diperbarui (PUT)' : 'Data sebagian berhasil diperbarui (PATCH)';
return response()->json([
'success' => true,
'message' => $message,
'data' => $kelas
], 200);
}
Fungsinya :
Fungsi update(Request $request, $id) terhubung dengan Route PATCH (/api/kelas/{id}). Secara spesifik pada rute PATCH, fungsi ini digunakan untuk memperbarui sebagian data kolom pada baris data kelas tertentu berdasarkan parameter ID yang dikirim melalui URL rute. Kelas::find($id): Sistem mencari data kelas terlebih dahulu di database menggunakan model Eloquent berdasarkan ID-nya. Jika data tidak ditemukan, sistem langsung menghentikan proses dan melempar respons error 404 Data kelas tidak ditemukan. $kelas->update($request->all()): Jika data ditemukan, perintah ini mengeksekusi perubahan pada field yang dikirimkan dari Postman saja (misalnya hanya memperbarui nama wali kelas). $request->isMethod('put'): Baris kode ini melakukan pengecekan taktis. Karena request kali ini menggunakan method PATCH, variabel $methodUsed akan berisi nilai 'PATCH' dan string respons pesan otomatis berubah secara dinamis menjadi "Data sebagian berhasil diperbarui (PATCH)". return response()->json([...], 200): Mengirimkan umpan balik ke Postman berupa format JSON yang berisi data terbaru pasca-update dengan status HTTP 200 OK.
Kodingan route PUT beserta dengan fungsinya
<<<public function update(Request $request, $id)
{
$request->validate([
'nama_kelas' => 'required',
'jurusan' => 'required',
'lokasi_ruangan' => 'required',
'nama_wali_kelas' => 'required',
]);
$kelas = Kelas::find($id);
if (!$kelas) {
return response()->json([
'success' => false,
'message' => 'Data kelas tidak ditemukan.'
], 404);
}
$kelas->update($request->all());
$methodUsed = $request->isMethod('put') ? 'PUT' : 'PATCH';
$message = $methodUsed === 'PUT' ? 'Seluruh data berhasil diperbarui (PUT)' : 'Data sebagian berhasil diperbarui (PATCH)';
return response()->json([
'success' => true,
'message' => $message,
'data' => $kelas
], 200);
}
Fungsinya :
Fungsi update(Request $request, $id) terhubung dengan Route PUT (/api/kelas/{id}). Pada rute PUT, fungsi ini digunakan untuk memperbarui atau menimpa (replace) seluruh data kolom pada baris data kelas secara total berdasarkan ID yang dikirim. $request->validate([...]): Berfungsi untuk memastikan bahwa semua kolom data yang dikirimkan dari Postman lengkap dan tidak boleh ada yang kosong saat proses penggantian data secara menyeluruh. Kelas::find($id): Sistem mencari record kelas yang sesuai di database. Jika ID salah atau tidak ada, maka akan mengembalikan response error HTTP 404. $kelas->update($request->all()): Perintah Eloquent untuk menimpa seluruh isi kolom data lama dengan paket payload data baru yang dikirimkan. $request->isMethod('put'): Karena request dikirim menggunakan method PUT, percabangan logika ini akan mendeteksi kondisi tersebut bernilai benar (true). Akibatnya, variabel $message akan otomatis berisi string dinamis "Seluruh data berhasil diperbarui (PUT)". return response()->json([...], 200): Mengirimkan response sukses dalam format JSON ke Postman dengan status HTTP 200 OK bersama dengan seluruh data baru yang sudah diperbarui.
Kodingan route delete beserta dengan fungsinya
<<<public function destroy($id)
{
$kelas = Kelas::find($id);
if (!$kelas) {
return response()->json([
'success' => false,
'message' => 'Data kelas tidak ditemukan atau sudah dihapus.'
], 404);
}
// Hapus data menggunakan Eloquent
$kelas->delete();
return response()->json([
'success' => 1,
'message' => 'Data berhasil dihapus'
], 200);
}
Fungsinya :
Fungsi destroy($id) terhubung dengan Route DELETE (/api/kelas/{id}). Fungsi ini memegang peranan untuk menghapus secara permanen satu baris data kelas tertentu yang ada di dalam database berdasarkan ID unik yang dikirimkan. Kelas::find($id): Menggunakan ORM Eloquent untuk melakukan pencarian data kelas di database sesuai dengan parameter ID yang ada pada URL rute. Jika data target tidak ditemukan (misalnya sudah terhapus sebelumnya), sistem akan langsung mengembalikan respons error HTTP 404 Not Found beserta pesan kesalahan. $kelas->delete(): Jika record data kelas ditemukan, perintah Eloquent ini akan langsung mengeksekusi aksi penghapusan baris data tersebut dari tabel database. return response()->json([...], 200): Setelah operasi penghapusan sukses dilakukan, server akan mengirimkan sinyal umpan balik terakhir ke Postman dalam format JSON berupa status sukses 1 dan pesan informasi "Data berhasil dihapus", disertai kode status HTTP 200 OK.
Tampilan request GET pada POSTMAN beserta dengan hasilnya :
Tampilan request POST pada POSTMAN beserta dengan hasilnya :
Tampilan request PATCH pada POSTMAN beserta dengan hasilnya :
Tampilan request PUT pada POSTMAN beserta dengan hasilnya :
Tampilan request DELETE pada POSTMAN beserta dengan hasilnya :
Macam-macam HTTP response status codes
100 Continue:
Menandakan bahwa bagian awal request sudah diterima dan client bisa melanjutkan pengiriman sisa data berikutnya.
200 OK:
Status standar yang artinya sukses total. Biasa keluar pada method GET, PUT, PATCH, dan DELETE ketika server berhasil memproses data dan mengirimkan respons balik.
201 Created:
Request sukses dan berhasil menciptakan data baru di database. Ini status wajib yang keluar setelah kita menembak rute POST (seperti saat kamu sukses menambah data kelas baru kemarin).
204 No Content:
Request sukses diproses, tetapi server sengaja tidak mengembalikan data apa-apa di bagian body (biasanya dipakai setelah sukses melakukan DELETE).
301 Moved Permanently:
URL atau halaman yang dituju sudah pindah permanen ke alamat baru.
302 Found (Redirect):
Halaman dipindahkan sementara. Di Laravel biasa, status ini otomatis keluar saat fungsi controller memanggil return redirect()->route(...).
400 Bad Request:
Server tidak paham dengan request-mu karena format datanya acak-acakan atau salah sintaks.
401 Unauthorized:
Kamu belum login atau tidak menyertakan token keamanan (API Token/Bearer Token) untuk mengakses rute tersebut.
403 Forbidden:
Server tahu siapa kamu, tapi kamu tidak punya hak akses atau dilarang keras membuka data tersebut.
404 Not Found:
Alamat URL yang kamu tembak tidak ada atau data tidak ditemukan di database (seperti logika if (!$kelas) yang kita buat jika ID yang dicari tidak ada).
422 Unprocessable Entity:
Request-mu ditolak karena gagal validasi (misalnya kamu kirim data lewat POST tapi kolom nama_kelas sengaja dikosongkan).
500 Internal Server Error:
Kode sejuta umat yang artinya kodingan kitalah yang error di dalam server (seperti error fatal error database atau salah ketik sintaks PHP di Laravel yang sempat kita bantai kemarin).
502 Bad Gateway:
Server yang bertindak sebagai gerbang (gateway) menerima respons yang tidak valid dari server utama di atasnya.
503 Service Unavailable:
Server sedang tidak siap atau tidak mampu menangani request, biasanya karena sedang maintenance (perbaikan) atau kelebihan beban (overload).