BELAJAR LARAVEL API DASAR

Day 2 — Membuat Route, Controller, dan Response JSON

Belajar membuat endpoint pertama di Laravel menggunakan Route dan Controller, serta mengembalikan data dalam format JSON yang bisa diakses oleh aplikasi lain

Author Avatar

Rizky Fauzi

Mentor Kompak Akademi

06 Oct 2025
5 menit membaca
Generative AI Illustration

Hallo teman-teman 👋
Selamat datang di artikel kedua di series belajar Laravel API by kompak-akademi. Pada series kali ini kita akan melanjutkan untuk pembuatan API menggunakan framework laravel.

Hari ini kita akan belajar :

  • Apa itu Route dan bagaimana cara kerjanya di Laravel.
  • Bagaimana cara Controller menerima request dan mengembalikan response.
  • Cara mengirim data JSON dinamis dari database atau array.
  • Bonus : Membuat struktur API sederhana dengan beberapa endpoint.

Apa Itu Route?

Route adalah titik masuk dari API kamu — kayak semacam alamat jalan yang bisa mengarah kamu ke rumah atau Controller kamu.

Contohnya seperti ini, jika kamu punya URL /api/users, maka route itulah yang menentukan :

  • Fungsi apa yang akan dijalankan
  • Data apa saja yang akan dikirimkan
  • Serta bagaimana hasil dikembalikan ke sisi user atau client

Laravel sendiri menyimpan semua route untuk API di file routes/api.php. Dan kalau kamu buka file itu, kamu akan melihat contoh bawaan seperti :

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

Untuk sekarang, abaikan tentang middleware terlebih dahulu. Kita fokus ke route dasar dulu.

Membuat Route Dasar

Kita mulai dari hal yang paling sederhana terlebih dahulu, silahkan buka file routes/api.php lalu tambahkan kode di bawah ini :

Route::get('/hello', function () {
    return response()->json([
        'message' => 'Halo dunia! Ini API pertamaku di Laravel.'
    ]);
});

Setelah itu silahkan kamu akses baik di browser kesayangan kamu atau di postman dengan URL route di bawah ini :

http://127.0.0.1:8000/api/hello

Kalau hasilnya seperti di bawah ini, artinya kamu sudah membuat API menggunakan Laravel API, selamat 🥳

{
  "message": "Halo dunia! Ini API pertamaku di Laravel."
}

Mari kita jelaskan flow nya seperti apa :

  • Pertama kode Route::get() berarti kita membuat route untuk HTTP menggunakan method GET
  • Kedua kode /hello adalah parameter dari endpoint-nya
  • Ketiga fungsi anonim atau closure di dalamnya berisi apa yang dilakukan saat endpoint di hit atau di panggil

Menghubungkan route dengan controller

Menulis logika langsung di file api.php memang terkesan cepat & simple, tapi kode kamu bisa saja berantakan kalau API-nya itu semakin banyak.
Jadi Laravel menyediakan Controller agar kodenya terstruktur.

Kita akan buat controller bernama UserController.

Caranya, kalian silahkan ketik di terminal kalian kode di bawah ini

php artisan make:controller Api/UserController

Lalu buka file tersebut di app/Http/Controllers/Api/UserController.php setelah itu silahkan ubah isi nya dengan kode di bawah ini :

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = [
            ['id' => 1, 'nama' => 'Syafiq Rizky', 'email' => 'syafiq@example.com'],
            ['id' => 2, 'nama' => 'Dina Rahma', 'email' => 'dina@example.com'],
        ];

        return response()->json([
            'success' => true,
            'data' => $users
        ]);
    }
}

Sekarang ubah route di file routes/api.php agar memakai controller ini atau memakai controller yang baru saja kita buat barusan dengan cara :

use App\Http\Controllers\Api\UserController;

Route::get('/users', [UserController::class, 'index']);

Lalu silahkan akses di browser kalian URL route di bawah ini :

http://127.0.0.1:8000/api/users

Dan kalau berhasil, maka outputnya itu akan seperti ini :

{
  "success": true,
  "data": [
    {
      "id": 1,
      "nama": "Syafiq Rizky",
      "email": "syafiq@example.com"
    },
    {
      "id": 2,
      "nama": "Dina Rahma",
      "email": "dina@example.com"
    }
  ]
}

Keren kan ? 🥳
Sekarang kamu sudah punya endpoint /api/users yang bisa di akses oleh siapapun untuk mendapatkan data users.

Menambahkan Endpoint Lain (Show User)

API biasanya tidak hanya menampilkan semua data, tapi juga dapat menampilkan data per item.
Misalnya : /api/users/1

Cara nya tambahkan method baru di controller UserController :

public function show($id)
{
    $users = [
        ['id' => 1, 'nama' => 'Syafiq Rizky', 'email' => 'syafiq@example.com'],
        ['id' => 2, 'nama' => 'Dina Rahma', 'email' => 'dina@example.com'],
    ];

    $user = collect($users)->firstWhere('id', $id);

    if ($user) {
        return response()->json([
            'success' => true,
            'data' => $user
        ]);
    }

    return response()->json([
        'success' => false,
        'message' => 'User tidak ditemukan'
    ], 404);
}

Lalu jangan lupa untuk tambahkan route nya :

Route::get('/users/{id}', [UserController::class, 'show']);

Sekarang coba akses URL route di bawah ini :

http://127.0.0.1:8000/api/users/1

Kalau berhasil maka output-nya akan seperti kode di bawah ini :

{
  "success": true,
  "data": {
    "id": 1,
    "nama": "Syafiq Rizky",
    "email": "syafiq@example.com"
  }
}

Kalau kamu mau coba hal yang lebih seru, coba gunakan ID yang tidak ada

http://127.0.0.1:8000/api/users/99

maka hasilnya akan seperti ini :

{
  "success": false,
  "message": "User tidak ditemukan"
}

Artinya route & controller kamu sudah bekerja dengan baik

Menangani Request POST (Menyimpan Data)

Sekarang kita coba buat endpoint untuk menambahkan data user.

Caranya tambahkan method baru bernama store di dalam controller UserController :

public function store(Request $request)
{
    $nama = $request->input('nama');
    $email = $request->input('email');

    return response()->json([
        'success' => true,
        'message' => 'User baru berhasil dibuat',
        'data' => [
            'id' => rand(3, 100),
            'nama' => $nama,
            'email' => $email
        ]
    ], 201);
}

Lalu tambahkan route baru di dalam file route/api.php :

Route::post('/users', [UserController::class, 'store']);

Untuk menjalankan testing API di laravel menggunakan Postman kamu bisa melakukan step by step di bawah ini :

  • Buka aplikasi Postman kamu
  • Setelah itu pilih dengan method nya itu POST jangan GET karena default nya itu GET, ganti GET itu menjadi POST
  • Setelah itu masukkan URL berikut ini :
http://127.0.0.1:8000/api/users

Setelah itu di bagian tab pilih Body lalu pilih raw lalu pilih JSON setelah itu isi dengan data ini :

{
  "nama": "Budi Hermawan",
  "email": "budi@example.com"
}

Klik send, dan kamu kalau berhasil maka akan mendapatkan hasil seperti ini :

{
  "success": true,
  "message": "User baru berhasil dibuat",
  "data": {
    "id": 47,
    "nama": "Budi Setiawan",
    "email": "budi@example.com"
  }
}

Walapun datanya belum di simpan ke dalam database, tapi kamu sudah belajar tentang alur dasar penggunaan dari request menggunakan method POST

Menambahkan Status Code HTTP

Setiap response API idealnya itu punya status code agar client itu tahu bahwa nanti itu hasilnya akan berhasil atau gagal hanya dari status code nya saja.

Kode Arti
200 OK (Berhasil)
201 Created (Data baru dibuat)
400 Bad Request
404 Not Found
500 Server Error

Kamu bisa menambahkan kode ini di setiap response()->json([...], kode)
Contoh nya seperti kode di bawah ini :

return response()->json([
    'message' => 'User baru berhasil dibuat'
], 201);

Struktur Akhir Controller-mu

Sekarang, file UserController.php kamu akan terlihat seperti kode di bawah ini :

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = [
            ['id' => 1, 'nama' => 'Syafiq Rizky', 'email' => 'syafiq@example.com'],
            ['id' => 2, 'nama' => 'Dina Rahma', 'email' => 'dina@example.com'],
        ];

        return response()->json(['success' => true, 'data' => $users]);
    }

    public function show($id)
    {
        $users = [
            ['id' => 1, 'nama' => 'Syafiq Rizky', 'email' => 'syafiq@example.com'],
            ['id' => 2, 'nama' => 'Dina Rahma', 'email' => 'dina@example.com'],
        ];

        $user = collect($users)->firstWhere('id', $id);

        if ($user) {
            return response()->json(['success' => true, 'data' => $user]);
        }

        return response()->json(['success' => false, 'message' => 'User tidak ditemukan'], 404);
    }

    public function store(Request $request)
    {
        $nama = $request->input('nama');
        $email = $request->input('email');

        return response()->json([
            'success' => true,
            'message' => 'User baru berhasil dibuat',
            'data' => [
                'id' => rand(3, 100),
                'nama' => $nama,
                'email' => $email
            ]
        ], 201);
    }
}

Kesimpulan

Kesimpulan dari pelajaran hari ini adalah bahwa kamu sudah belajar tentang :

  • Cara membuat route dasar dan menghubungkannya ke controller.
  • Mengirim data JSON melalui response()->json().
  • Membuat endpoint dinamis dengan parameter.
  • Mengirim request POST dan menerima data dari client.
  • Menyertakan status code HTTP agar API lebih profesional.

Dengan pemahaman ini, kamu sudah bisa membangun API sederhana yang benar-benar berfungsi. Di esok hari, kita akan melangkah ke level berikutnya yaitu kita akan belajar tentang cara membuat CRUD API menggunakan database MySQL.

Sampai jumpa di artikel selanjut nya 👋

Kalau ada pertanyaan silahkan bisa join ke komunitas kita baik di discord ataupun di telegram group :

Program harus ditulis agar manusia bisa membacanya, dan hanya secara kebetulan agar mesin bisa mengeksekusinya. — Harold Abelson (MIT Professor & Penulis Structure and Interpretation of Computer Programs)

Rizky Fauzi

Tentang Penulis

Rizky Fauzi

Mentor Kompak Akademi

Baca artikel kami yang lainnya

Day 3 — CRUD API: Create, Read, Update, Delete dengan Laravel
Belajar Laravel API dasar

Day 3 — CRUD API: Create, Read, Update, Delete dengan Laravel

Membangun API CRUD lengkap menggunakan Laravel, mulai dari membuat data baru hingga menghapus data, dengan pengujian sederhana menggunakan Postman.

5 menit baca
06 Oct 2025
Day 4 — Menggunakan Resource &amp; Resource Collection untuk Format Data API
Belajar Laravel API dasar

Day 4 — Menggunakan Resource &amp; Resource Collection untuk Format Data API

Pelajari cara membuat format data API lebih rapi dan konsisten menggunakan Laravel API Resource agar mudah dikelola dan aman digunakan.

5 menit baca
06 Oct 2025
Day 1 — Pengenalan API &amp; Persiapan Project Laravel
Belajar Laravel API dasar

Day 1 — Pengenalan API &amp; Persiapan Project Laravel

Pada tahap ini kamu akan mengenal dasar konsep API dan bagaimana cara kerjanya dalam pertukaran data antar aplikasi. Selain itu, kamu juga akan menyiapkan project Laravel dari awal hingga siap digunakan untuk membangun API di tahap berikutnya.

5 menit baca
06 Oct 2025

Ingin Belajar Lebih Dalam tentang AI?

Daftar kursus kami dan mulai perjalanan Anda menuju karir di bidang AI