CRUD REST API Lengkap di Laravel - Perwira Learning Center

 

Latar Belakang

Sebagai lanjutan dari pembahasan mengenai Eloquent ORM dan relasi data, tahap berikutnya adalah mempelajari implementasi CRUD REST API di Laravel. Setelah memahami bagaimana model berinteraksi dengan database, penting untuk mengetahui bagaimana data tersebut dapat diakses dan dikelola melalui endpoint API. REST API memungkinkan aplikasi berkomunikasi dengan sistem lain secara terstruktur menggunakan HTTP method.

Artikel ini dibuat dengan tujuan untuk mendokumentasikan hasil pembelajaran saya mengenai pembuatan CRUD REST API menggunakan Laravel. Dengan memahami proses ini, saya dapat membangun backend yang mampu menangani permintaan data secara sistematis dan sesuai dengan standar REST.

Konsep Dasar REST API di Laravel

Laravel menyediakan file khusus untuk mendefinisikan route API, yaitu routes/api.php. File ini khusus menangani request yang berkaitan dengan API dan secara default menggunakan prefix /api pada URL-nya.

Perbedaan utama antara web.php dan api.php:

web.php
Untuk route yang menghasilkan view HTML, mendukung session, cookies, dan CSRF protection.

api.php
Untuk route API, tanpa session state (stateless), mendukung rate limiting, dan response dalam format JSON.

Response dari API umumnya menggunakan format JSON. Laravel secara otomatis akan mengubah array atau koleksi data menjadi JSON ketika kita mengembalikannya dari controller.

Membuat Resource Controller

Pada artikel Routing & Controller saya sudah membuat controller resource yang akan digunakan pada saat membuat CRUD di laravel. Namun pada artikel ini saya akan mencontohkan kembali untuk membuat Controller Resource. Kita bisa membuatnya menggunakan perintah berikut:

php artisan make:controller ProductController --resource    

Berikut struktur yang dihasilkan:


Mendefinisikan Route API

Setelah controller siap, kita perlu mendaftarkannya di routes/api.php. Laravel menyediakan method apiResource() yang secara otomatis membuat route untuk kelima method di atas.

use App\Http\Controllers\ProductController;

Route::apiResource('products', ProductController::class);

Hanya dengan satu baris kode, kita sudah mendapatkan 5 endpoint berikut:

MethodURLController MethodFungsi
GET/api/productsindexMengambil semua produk
POST/api/productsstoreMenambah produk baru
GET/api/products/{id}showMengambil satu produk
PUT/PATCH/api/products/{id}updateMengupdate produk
DELETE/api/products/{id}destroyMenghapus produk

Perhatikan bahwa URL otomatis menggunakan prefix /api karena didefinisikan di file api.php.

Membuat Model 

Di artikel sebelumnya saya sudah membuat mengenai migration database, jadi untuk artike ini saya akan melanjutkan ke pembuatan model. Disini saya akan membuat dua model yaitu model product dan model category. Untuk membuat model bisa dengan menjalankan perintah artisan berikut:

php artisan make:mode ProductModel
php artisan make:mode CategoryModel

Lalu kita isi kedua model dengan properti fillable dan juga relasinya.
app/Models/ProductModel.php

app/Models/CategoryModel.php

Implementasi CRUD

Sekarang kita akan mengimplementasikan CRUD lengkap menggunakan model ProductModel.

Mengambil Semua Data (GET / index)


Method ini mengembalikan semua data produk dalam format JSON dengan status code 200 (OK).

Menambahkan Data (POST / store)

Jika validasi gagal, Laravel otomatis mengembalikan response error. Jika berhasil, data disimpan dan dikembalikan dengan status code 201 (Created).

Menampilkan Satu Data (GET / show)


Jika data tidak ditemukan, API mengembalikan status 404 (Not Found).

Memperbarui Data (PUT / update)

Kata kunci sometimes digunakan agar validasi hanya berjalan jika field tersebut dikirim dalam request (mendukung update parsial/PATCH).

Menghapus Data (DELETE / destroy)

Pengujian Endpoint

Endpoint dapat diuji menggunakan tools seperti Postman.

Contoh Pengujian:

GET /api/products

  • Method: GET

  • URL: http://localhost:8000/api/products

  • Klik Send → lihat response JSON

POST /api/products

  • Method: POST

  • URL: http://localhost:8000/api/products

  • Body → raw → JSON

  • Isi data produk → Klik Send

GET /api/products/1

  • Method: GET

  • URL: http://localhost:8000/api/products/1


PUT /api/products/1

  • Method: PUT

  • URL: http://localhost:8000/api/products/1

  • Body: JSON data yang diperbarui


DELETE /api/products/1

  • Method: DELETE

  • URL: http://localhost:8000/api/products/1


Pastikan untuk selalu memeriksa status code dan struktur response JSON yang dikembalikan.

Hasil Pembelajaran

Melalui pembelajaran ini, saya memahami bahwa implementasi CRUD REST API di Laravel melibatkan pembuatan route API, controller, serta penggunaan model Eloquent untuk mengelola data. Setiap operasi CRUD dipetakan ke HTTP method yang sesuai, seperti GET untuk mengambil data, POST untuk menambahkan data, PUT atau PATCH untuk memperbarui data, dan DELETE untuk menghapus data.

Saya juga mempelajari bagaimana mengembalikan response dalam format JSON agar dapat digunakan oleh aplikasi frontend atau layanan lain. Selain itu, saya memahami pentingnya validasi data serta penanganan error agar API yang dibuat lebih aman dan stabil.

Kesimpulan

Implementasi CRUD REST API di Laravel memberikan pemahaman yang lebih konkret mengenai bagaimana backend bekerja dalam mengelola data. Dengan memanfaatkan routing, controller, dan Eloquent ORM, proses pengolahan data dapat dilakukan secara terstruktur dan efisien.

Pemahaman ini menjadi dasar penting dalam membangun aplikasi berbasis API yang dapat terintegrasi dengan berbagai platform, serta siap dikembangkan dengan fitur yang lebih kompleks di tahap selanjutnya.

Daftar Pustaka

Laravel. (n.d.). HTTP routing. Diakses pada 27 Februari 2026, dari https://laravel.com/docs/routing

Laravel. (n.d.). Controllers. Diakses pada 27 Februari 2026, dari from https://laravel.com/docs/controllers

Laravel. (n.d.). Eloquent: Getting started. Diakses pada 27 Februari 2026, dari https://laravel.com/docs/eloquent

Laravel. (n.d.). Validation. Diakses pada 27 Februari 2026, dari https://laravel.com/docs/validation

Laravel. (n.d.). HTTP responses. Diakses pada 27 Februari 2026, dari https://laravel.com/docs/responses

Niagahoster. (2023). Cara membuat REST API dengan Laravel untuk pemula. Diakses pada 27 Februari 2026, dari https://www.niagahoster.co.id/blog/rest-api-laravel/

Petani Kode. (2022). Tutorial membuat REST API di Laravel. Diakses pada 27 Februari 2026, dari https://www.petanikode.com/laravel-rest-api/

Malas Ngoding. (2022). Membuat REST API dengan Laravel lengkap. Diakses pada 27 Februari 2026, dari https://www.malasngoding.com/category/laravel/

Codepolitan. (2022). Belajar membuat API menggunakan Laravel. Diakses pada 27 Februari 2026, dari https://www.codepolitan.com/