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 untukHTTP
menggunakan methodGET
- 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)