DEV Community

Muhammad Dhiyaul Atha
Muhammad Dhiyaul Atha

Posted on

Belajar API Laravel: Dari Problem ke Solusi!

"Pernah nggak, frontend React kamu gagal ambil data dari backend Laravel? Atau Postman cuma muter-muter nggak dapet respon? Tenang, kamu nggak sendirian! Banyak pemula Laravel ngalamin hal yang sama. Di sinilah API Laravel jadi penyelamat."

Ketika kamu bikin frontend React dan backend Laravel, tapi data nggak tampil karena API belum siap — itu frustrasi banget. Nah, artikel ini kasih solusi lengkapnya biar kamu nggak pusing lagi!


Kenapa API itu Penting?

  • API itu jembatan antara frontend dan backend
  • Wajib untuk Single Page Application (SPA) & mobile app
  • Tanpa API, data nggak bisa ditampilkan ke user


Contoh API Laravel: CRUD Artikel

Di artikel ini, kita bakal bikin API Artikel (CRUD) pakai Laravel. Simpel, tapi bener-bener kepake buat blog, news, atau project latihan.


Alur Kerja API Laravel

Sebelum ngoding, pahami dulu alurnya:

Client (Postman / Frontend)
→ Request HTTP
→ Route API
→ Controller
→ Model
→ Database
→ Response JSON
Enter fullscreen mode Exit fullscreen mode

Jadi, setiap kali client minta data, request-nya lewat route, diproses controller, ambil data dari model/database, lalu balikin response JSON.


Step 1: Setup Project Laravel

  • Laravel versi terbaru (misal 10.x)
  • Pastikan Composer sudah terinstal
composer create-project --prefer-dist laravel/laravel belajar-api
Enter fullscreen mode Exit fullscreen mode

Setting database di .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=belajar_api
DB_USERNAME=root
DB_PASSWORD=
Enter fullscreen mode Exit fullscreen mode

Step 2: Buat Model & Migration Artikel

Kenapa pakai -m?

-m otomatis bikin migration file, jadi nggak perlu bikin manual.

php artisan make:model Article -m
Enter fullscreen mode Exit fullscreen mode

Edit migration di database/migrations/..._create_articles_table.php:

public function up()
{
    Schema::create('articles', function (Blueprint $table) {
        $table->id();
        $table->string('title');
        $table->text('content');
        $table->timestamps();
    });
}
Enter fullscreen mode Exit fullscreen mode

Jalankan migrasi:

php artisan migrate
Enter fullscreen mode Exit fullscreen mode

Pentingnya $fillable

Di model Article.php tambahkan:

protected $fillable = ['title', 'content'];
Enter fullscreen mode Exit fullscreen mode

Kenapa harus diisi?

Kalau tidak diisi, Laravel tidak bisa menyimpan data karena proteksi mass assignment. Ini fitur keamanan agar data yang masuk ke database benar-benar sesuai yang diizinkan.


Step 3: Membuat Controller API Artikel

Bikin controller resource:

php artisan make:controller Api/ArticleController --resource
Enter fullscreen mode Exit fullscreen mode

Penjelasan fungsi-fungsi utama:

  • index() → Ambil semua artikel dari database, balikin dalam bentuk JSON.
  • store() → Simpan artikel baru. Biasanya ambil data dari request, validasi, lalu simpan.
  • show($id) → Ambil detail artikel berdasarkan ID.
  • update($id) → Ubah data artikel tertentu.
  • destroy($id) → Hapus artikel.

Contoh implementasi (singkat):

public function index() {
    return Article::all();
}

public function store(Request $request) {
    // Validasi dulu
    $validated = $request->validate([
        'title' => 'required',
        'content' => 'required',
    ]);
    // Simpan data
    $article = Article::create($validated);
    return response()->json($article, 201);
}

public function show($id) {
    return Article::findOrFail($id);
}

public function update(Request $request, $id) {
    $article = Article::findOrFail($id);
    $article->update($request->all());
    return response()->json($article);
}

public function destroy($id) {
    Article::destroy($id);
    return response()->json(null, 204);
}
Enter fullscreen mode Exit fullscreen mode

Step 4: Menambahkan Route API

Edit routes/api.php:

Route::apiResource('articles', App\Http\Controllers\Api\ArticleController::class);
Enter fullscreen mode Exit fullscreen mode

Cara Testing API dengan Postman

Cek endpoint pakai Postman/curl:

Method Endpoint Fungsi Contoh Request Contoh Response
GET /api/articles List semua artikel - [ {...} ]
POST /api/articles Simpan artikel baru { "title": "Belajar Laravel API", "content": "Tutorial lengkap & mudah!" } { "id": 1, ... }
GET /api/articles/{id} Detail artikel - { "id": 1, ... }
PUT /api/articles/{id} Update artikel { "title": "Update", "content": "Edit konten" } { "id": 1, ... }
DELETE /api/articles/{id} Hapus artikel - null

Contoh Lengkap Request & Response

Request POST:

POST /api/articles
Content-Type: application/json

{
    "title": "Belajar Laravel API",
    "content": "Tutorial lengkap & mudah!"
}
Enter fullscreen mode Exit fullscreen mode

Response 201 Created:

{
    "id": 1,
    "title": "Belajar Laravel API",
    "content": "Tutorial lengkap & mudah!",
    "created_at": "2026-01-10"
}
Enter fullscreen mode Exit fullscreen mode

Request GET:

GET /api/articles/1
Enter fullscreen mode Exit fullscreen mode

Response 200 OK:

{
    "id": 1,
    "title": "Belajar Laravel API",
    "content": "Tutorial lengkap & mudah!",
    "created_at": "2026-01-10"
}
Enter fullscreen mode Exit fullscreen mode

Request PUT:

PUT /api/articles/1
Content-Type: application/json

{
    "title": "Update Judul",
    "content": "Konten sudah diupdate!"
}
Enter fullscreen mode Exit fullscreen mode

Response 200 OK:

{
    "id": 1,
    "title": "Update Judul",
    "content": "Konten sudah diupdate!",
    "created_at": "2026-01-10"
}
Enter fullscreen mode Exit fullscreen mode

Request DELETE:

DELETE /api/articles/1
Enter fullscreen mode Exit fullscreen mode

Response 204 No Content:

null
Enter fullscreen mode Exit fullscreen mode

Error Handling & Status Code di Laravel

Laravel otomatis mengirim status code sesuai aksi:

  • 200 OK: Data berhasil diambil/diupdate
  • 201 Created: Data berhasil dibuat
  • 204 No Content: Data berhasil dihapus
  • 404 Not Found: Data tidak ditemukan
  • 422 Unprocessable Entity: Validasi gagal
  • 500 Internal Server Error: Error server

Contoh error response:

{
    "message": "No query results for model [App\\Models\\Article] 99"
}
Enter fullscreen mode Exit fullscreen mode

Tips: Gunakan findOrFail() untuk otomatis dapat response 404 jika data tidak ditemukan.


Common Mistake Pemula

"Kesalahan umum pemula waktu bikin API Laravel:"

  • Lupa nambah $fillable di model, jadi data nggak bisa disimpan.
  • Pakai method GET buat simpan data (harusnya POST).
  • Nggak validasi input, data jadi berantakan.
  • Langsung expose semua field tanpa filter.
  • Salah setup .env (database, port, user/password)
  • Menjalankan route di web.php bukan di api.php
  • Lupa restart server setelah ubah konfigurasi

Tips: Selalu cek error di response, pastikan method & field sudah benar, dan cek konfigurasi environment!


Next Step: Level Up API-mu!

Jangan berhenti di CRUD. Coba explore:

  • Sanctum / Auth: Biar API kamu aman
  • API Resource: Format response lebih rapi
  • Pagination: Untuk data banyak
  • Rate Limiting: Biar nggak di-spam

Tunggu artikel lanjutan ya!


🚀 Yuk Diskusi & Share!

Kalau kamu stuck di step tertentu, tulis di komentar ya! Share juga pengalaman kamu bikin API Laravel, atau request topik lanjutan (autentikasi, API resource, pagination, dll).

Jangan lupa follow & share artikel ini ke teman yang lagi belajar Laravel!


Struktur Ringkas

  1. Masalah yang sering dialami pemula
  2. Apa yang akan dibuat
  3. Alur kerja API Laravel
  4. Setup singkat
  5. CRUD API step by step
  6. Testing API
  7. Kesalahan umum
  8. Next step / lanjutan

Referensi:

Top comments (0)