Membuat REST API Sederhana dengan Laravel
Salah satu hal pertama yang biasanya dicoba saat belajar Laravel adalah membuat REST API sederhana. Di tutorial ini kita akan bikin API to-do list minimal: satu tabel, satu model, satu controller, dan dua endpoint — cukup untuk paham alurnya dari nol.
Yang Dibutuhkan
- PHP 8.2 ke atas dan Composer
- Database (MySQL/SQLite, bebas)
- Sedikit familiar dengan terminal
1. Buat Proyek Baru
Mulai dari proyek Laravel kosong, lalu buat model Task sekaligus file migration-nya:
composer create-project laravel/laravel task-api cd task-api php artisan make:model Task -m
2. Definisikan Tabel
Buka file migration yang baru dibuat, lalu isi kolom yang dibutuhkan:
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->boolean('is_done')->default(false);
$table->timestamps();
});Jalankan php artisan migrate untuk membuat tabelnya di database.
3. Siapkan Model
Pastikan kolom yang boleh diisi lewat mass assignment didaftarkan di $fillable:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
protected $fillable = ['title', 'is_done'];
}4. Buat Controller
Controller ini menangani dua hal: menampilkan semua task, dan menyimpan task baru.
<?php
namespace App\Http\Controllers;
use App\Models\Task;
use Illuminate\Http\Request;
class TaskController extends Controller
{
public function index()
{
return Task::latest()->get();
}
public function store(Request $request)
{
$data = $request->validate([
'title' => ['required', 'string', 'max:255'],
]);
$task = Task::create($data);
return response()->json($task, 201);
}
}5. Daftarkan Route
Tambahkan dua route berikut di routes/web.php (atau routes/api.php kalau proyekmu pakai itu):
use App\Http\Controllers\TaskController;
Route::get('/api/tasks', [TaskController::class, 'index']);
Route::post('/api/tasks', [TaskController::class, 'store']);6. Coba dari Terminal
Jalankan php artisan serve, lalu kirim request lewat curl:
curl -X POST http://localhost:8000/api/tasks \
-H "Content-Type: application/json" \
-d '{"title": "Belajar Laravel"}'Kalau berhasil, responsnya kira-kira seperti ini:
{
"id": 1,
"title": "Belajar Laravel",
"is_done": false,
"created_at": "2026-08-19T02:10:00.000000Z",
"updated_at": "2026-08-19T02:10:00.000000Z"
}Penutup
Itu dia — API sederhana dengan dua endpoint yang jalan penuh dari database sampai response JSON. Dari sini kamu bisa lanjut tambah validasi lebih ketat, autentikasi (Sanctum), atau endpoint update & delete dengan pola yang sama.