REST API merupakan salah satu teknologi yang banyak digunakan dalam pengembangan aplikasi modern. Dengan REST API, sebuah aplikasi dapat saling bertukar data dengan aplikasi lain, meskipun dibangun menggunakan bahasa pemrograman atau platform yang berbeda.
Misalnya, aplikasi Android dapat mengambil data mahasiswa dari server, sementara aplikasi web menggunakan database yang sama untuk mengelola informasi tersebut.
Laravel 13 menyediakan berbagai fitur untuk membantu developer membangun REST API dengan lebih mudah dan terstruktur. Framework ini mendukung pengelolaan routing, controller, validasi data, hingga respons dalam format JSON.
Pada tutorial kali ini, kita akan belajar membuat REST API menggunakan Laravel 13 dan MySQL. Sebagai contoh, kita akan membangun REST API Data Mahasiswa yang memiliki fitur untuk menampilkan, menambahkan, mengubah, dan menghapus data.
Tutorial ini cocok untuk mahasiswa maupun web developer pemula yang ingin memahami dasar pengembangan backend menggunakan Laravel.
1. Apa Itu REST API?
REST API (Representational State Transfer Application Programming Interface) adalah pendekatan untuk membangun layanan yang memungkinkan aplikasi saling berkomunikasi melalui HTTP.
REST API umumnya menggunakan format JSON (JavaScript Object Notation) untuk mengirim dan menerima data.
Sebagai contoh, ketika aplikasi Android ingin menampilkan daftar mahasiswa, aplikasi tersebut dapat mengirimkan permintaan ke server melalui endpoint API. Server kemudian mengambil data dari database dan mengirimkannya kembali dalam bentuk JSON.
Berikut beberapa HTTP method yang sering digunakan dalam REST API:
| Method | Fungsi |
|---|---|
| GET | Mengambil data |
| POST | Menambahkan data |
| PUT | Memperbarui seluruh data |
| PATCH | Memperbarui sebagian data |
| DELETE | Menghapus data |
Dengan pendekatan ini, satu backend Laravel dapat digunakan oleh berbagai aplikasi, seperti website, aplikasi Android, maupun frontend berbasis JavaScript.
2. Persiapan Membuat REST API Laravel 13
Sebelum mulai membuat proyek, pastikan beberapa perangkat lunak berikut sudah tersedia:
- PHP minimal 8.3.
- Composer untuk mengelola dependency PHP.
- MySQL sebagai database.
- Laravel 13.
- Visual Studio Code atau editor kode lainnya.
- Postman untuk menguji REST API.
- Jika sebelumnya sudah mengikuti tutorial Laravel 13, sebagian besar kebutuhan tersebut mungkin sudah tersedia di komputer.
3. Membuat Proyek Laravel 13
Pertama, buka terminal atau Command Prompt, kemudian jalankan perintah berikut untuk membuat proyek Laravel 13:
composer create-project laravel/laravel api-mahasiswa "^13.0"
Setelah proses instalasi selesai, masuk ke direktori proyek:
cd api-mahasiswa
Kemudian jalankan server Laravel:
php artisan serve
Jika berhasil, aplikasi dapat diakses melalui alamat:
http://127.0.0.1:8000
4. Mengaktifkan API Routing Laravel
Pada instalasi Laravel 13, file routes/api.php belum tentu tersedia secara otomatis.
Untuk mengaktifkan API routing, jalankan perintah berikut:
php artisan install:api
Perintah tersebut akan membuat file routes/api.php dan memasang Laravel Sanctum untuk kebutuhan autentikasi API.
Pada tutorial ini, kita belum menggunakan autentikasi agar pembaca dapat memahami dasar REST API terlebih dahulu. Endpoint yang dibuat nantinya bersifat publik dan hanya digunakan untuk pembelajaran lokal.
5. Membuat Database MySQL
Selanjutnya, buka phpMyAdmin dan buat database baru dengan nama:
CREATE DATABASE db_api_mahasiswa;
Setelah database dibuat, buka file .env pada direktori utama proyek Laravel.
Sesuaikan konfigurasi database menjadi:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_api_mahasiswa
DB_USERNAME=root
DB_PASSWORD=
Sesuaikan username dan password dengan konfigurasi MySQL pada komputer masing-masing.
Dengan konfigurasi tersebut, Laravel akan menggunakan MySQL sebagai tempat penyimpanan data mahasiswa.
6. Membuat Model dan Migration Mahasiswa
Model digunakan untuk berinteraksi dengan database, sedangkan migration digunakan untuk mengatur struktur tabel.
Jalankan perintah berikut:
php artisan make:model Mahasiswa -m
Perintah tersebut akan membuat file model Mahasiswa.php dan file migration untuk tabel mahasiswa.
Buka file migration di folder database/migrations, kemudian sesuaikan fungsi up() menjadi:
public function up(): void
{
Schema::create('mahasiswas', function (Blueprint $table) {
$table->id();
$table->string('nim')->unique();
$table->string('nama');
$table->string('prodi');
$table->string('email')->nullable();
$table->timestamps();
});
}
Tabel tersebut memiliki beberapa kolom untuk menyimpan informasi mahasiswa, seperti NIM, nama, program studi, dan email.
Selanjutnya, jalankan migration:
php artisan migrate
Jika berhasil, tabel mahasiswas akan dibuat secara otomatis di database MySQL.
Mengatur Model Mahasiswa
Buka file app/Models/Mahasiswa.php, kemudian tambahkan properti $fillable:
<?php
namespace AppModels;
use IlluminateDatabaseEloquentModel;
class Mahasiswa extends Model
{
protected $fillable = [
'nim',
'nama',
'prodi',
'email'
];
}
Properti $fillable menentukan kolom yang diperbolehkan untuk diisi melalui proses mass assignment.
7. Membuat API Controller
Controller bertugas mengatur proses pengelolaan data yang diterima melalui request API.
Buat controller khusus API menggunakan perintah:
php artisan make:controller Api/MahasiswaController --api
Laravel akan membuat file:
app/Http/Controllers/Api/MahasiswaController.php
Selanjutnya, buka file tersebut dan tambahkan kode berikut:
<?php
namespace AppHttpControllersApi;
use AppHttpControllersController;
use AppModelsMahasiswa;
use IlluminateHttpRequest;
class MahasiswaController extends Controller
{
// Menampilkan seluruh data mahasiswa
public function index()
{
return response()->json([
'message' => 'Data mahasiswa berhasil diambil',
'data' => Mahasiswa::all()
], 200);
}
// Menyimpan data mahasiswa
public function store(Request $request)
{
$validated = $request->validate([
'nim' => 'required|unique:mahasiswas,nim',
'nama' => 'required',
'prodi' => 'required',
'email' => 'nullable|email'
]);
$mahasiswa = Mahasiswa::create($validated);
return response()->json([
'message' => 'Data mahasiswa berhasil ditambahkan',
'data' => $mahasiswa
], 201);
}
// Menampilkan satu data mahasiswa
public function show(Mahasiswa $mahasiswa)
{
return response()->json([
'message' => 'Detail mahasiswa berhasil diambil',
'data' => $mahasiswa
], 200);
}
// Memperbarui data mahasiswa
public function update(Request $request, Mahasiswa $mahasiswa)
{
$validated = $request->validate([
'nim' => 'required|unique:mahasiswas,nim,' . $mahasiswa->id,
'nama' => 'required',
'prodi' => 'required',
'email' => 'nullable|email'
]);
$mahasiswa->update($validated);
return response()->json([
'message' => 'Data mahasiswa berhasil diperbarui',
'data' => $mahasiswa
], 200);
}
// Menghapus data mahasiswa
public function destroy(Mahasiswa $mahasiswa)
{
$mahasiswa->delete();
return response()->json([
'message' => 'Data mahasiswa berhasil dihapus'
], 200);
}
}
Pada controller tersebut terdapat lima method utama:
index()untuk mengambil seluruh data mahasiswa.store()untuk menambahkan data baru.show()untuk mengambil detail mahasiswa.update()untuk memperbarui data.destroy()untuk menghapus data.
Laravel juga menyediakan validasi input agar data yang diterima sesuai dengan aturan yang ditentukan.
8. Mengatur API Routes
Setelah controller selesai dibuat, langkah selanjutnya adalah mengatur endpoint API.
Buka file:
routes/api.php
Tambahkan kode berikut:
<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersApiMahasiswaController;
Route::apiResource('mahasiswa', MahasiswaController::class);
Dengan menggunakan Route::apiResource(), Laravel akan membuat beberapa endpoint secara otomatis untuk kebutuhan CRUD API.
Berikut daftar endpoint yang dihasilkan:
| Method | Endpoint | Fungsi |
|---|---|---|
| GET | /api/mahasiswa |
Mengambil semua data |
| POST | /api/mahasiswa |
Menambahkan data |
| GET | /api/mahasiswa/{mahasiswa} |
Mengambil detail |
| PUT/PATCH | /api/mahasiswa/{mahasiswa} |
Memperbarui data |
| DELETE | /api/mahasiswa/{mahasiswa} |
Menghapus data |
Perlu diperhatikan bahwa Laravel otomatis menambahkan prefix /api pada route yang didefinisikan di routes/api.php.
Untuk memeriksa daftar route, jalankan:
php artisan route:list --path=api
Jika seluruh konfigurasi benar, endpoint API mahasiswa akan muncul pada daftar tersebut.
9. Menguji REST API Menggunakan Postman
Setelah seluruh bagian selesai dibuat, kita dapat mulai menguji API menggunakan Postman.
Pastikan server Laravel masih berjalan melalui perintah:
php artisan serve
Kemudian buka aplikasi Postman dan gunakan alamat dasar:
http://127.0.0.1:8000/api/mahasiswa
Untuk request yang mengirimkan data, gunakan header:
Accept: application/json
Content-Type: application/json
Berikut beberapa pengujian yang dapat dilakukan.
A. Mengambil Seluruh Data Mahasiswa (GET)
Pilih method GET, kemudian masukkan endpoint:
http://127.0.0.1:8000/api/mahasiswa
Klik Send.
Jika berhasil, server akan mengembalikan respons JSON seperti berikut:
{
"message": "Data mahasiswa berhasil diambil",
"data": [
{
"id": 1,
"nim": "2301001",
"nama": "Andi Saputra",
"prodi": "Informatika",
"email": "andi@example.com"
}
]
}
B. Menambahkan Data Mahasiswa (POST)
Pilih method POST dengan endpoint:
http://127.0.0.1:8000/api/mahasiswa
Buka tab Body, pilih raw, kemudian pilih JSON.
Masukkan data berikut:
{
"nim": "2301002",
"nama": "Siti Rahma",
"prodi": "Sistem Informasi",
"email": "siti@example.com"
}
Klik Send.
Jika berhasil, API akan memberikan respons dengan status HTTP 201 Created.
C. Mengambil Detail Mahasiswa (GET)
Untuk mengambil satu data mahasiswa, gunakan endpoint:
http://127.0.0.1:8000/api/mahasiswa/1
Ganti angka 1 dengan ID mahasiswa yang ingin ditampilkan.
D. Memperbarui Data Mahasiswa (PUT)
Pilih method PUT dan masukkan endpoint:
http://127.0.0.1:8000/api/mahasiswa/1
Pada bagian Body, masukkan data yang ingin diperbarui:
{
"nim": "2301001",
"nama": "Andi Saputra",
"prodi": "Teknik Informatika",
"email": "andi@example.com"
}
Klik Send untuk mengirim perubahan ke server.
E. Menghapus Data Mahasiswa (DELETE)
Untuk menghapus data, pilih method DELETE dan gunakan endpoint:
http://127.0.0.1:8000/api/mahasiswa/1
Jika berhasil, server akan memberikan pesan bahwa data mahasiswa telah dihapus.
Dengan lima pengujian tersebut, kita sudah mencoba seluruh operasi CRUD melalui REST API.
10. Mengenal Status Code pada REST API
Dalam pengembangan REST API, server menggunakan HTTP status code untuk memberikan informasi mengenai hasil pemrosesan request.
Beberapa status code yang sering digunakan adalah:
| Status Code | Keterangan |
|---|---|
| 200 | Request berhasil |
| 201 | Data berhasil dibuat |
| 204 | Request berhasil tanpa isi respons |
| 400 | Request tidak valid |
| 401 | Belum terautentikasi |
| 403 | Tidak memiliki izin |
| 404 | Data atau endpoint tidak ditemukan |
| 422 | Validasi data gagal |
| 500 | Terjadi kesalahan pada server |
Contohnya, ketika pengguna mengirim data mahasiswa dengan NIM yang sudah terdaftar, Laravel akan mengembalikan status 422 Unprocessable Content beserta informasi kesalahan validasi, selama request mengharapkan respons JSON.
Memahami status code akan membantu developer ketika melakukan debugging maupun mengintegrasikan API dengan aplikasi lain.
11. Menghubungkan REST API dengan Aplikasi Lain
Salah satu kelebihan REST API adalah kemampuannya untuk digunakan oleh berbagai platform.
API Data Mahasiswa yang telah dibuat dapat dikembangkan untuk beberapa kebutuhan, seperti:
- Aplikasi Android: Menampilkan data mahasiswa melalui aplikasi mobile.
- Frontend JavaScript: Mengambil data untuk ditampilkan menggunakan React, Vue, atau framework frontend lainnya.
- Aplikasi web: Menggunakan Laravel sebagai backend dan teknologi frontend terpisah.
- Sistem informasi: Mengintegrasikan data dari beberapa aplikasi yang berbeda.
Dengan demikian, developer tidak harus membuat ulang seluruh proses pengelolaan data untuk setiap platform. Backend dapat menyediakan API yang digunakan bersama.
Kesimpulan
Laravel 13 menyediakan berbagai fasilitas untuk membangun REST API dengan struktur yang terorganisasi. Melalui tutorial ini, kita telah mempelajari cara mengaktifkan API routing, membuat model dan migration, membangun controller, mengatur endpoint, serta menguji API menggunakan Postman.
Contoh REST API Data Mahasiswa juga menunjukkan bagaimana Laravel dapat digunakan untuk menyediakan layanan pengelolaan data yang bisa diakses oleh berbagai aplikasi.
Tutorial ini masih merupakan dasar pengembangan REST API. Untuk kebutuhan aplikasi yang digunakan secara nyata, developer perlu menambahkan autentikasi, otorisasi, pembatasan akses, dan pengamanan endpoint.
Bagi mahasiswa maupun web developer pemula, memahami REST API merupakan salah satu keterampilan penting dalam pengembangan aplikasi modern, khususnya ketika membangun sistem yang melibatkan website, aplikasi mobile, dan layanan backend.
Referensi dokumentasi resmi:
- Laravel 13 Documentation: https://laravel.com/docs/13.x
- Laravel API Routing: https://laravel.com/docs/13.x/routing
- Laravel Controllers: https://laravel.com/docs/13.x/controllers
- Laravel Validation: https://laravel.com/docs/13.x/validation
- Laravel Sanctum: https://laravel.com/docs/13.x/sanctum