← Back to Blog

Membuat REST API Sederhana dengan Laravel

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.

Other posts