MONEY TRACKER: API CRUD SEDERHANA DENGAN LARAVEL DAN POSTMAN #T11

Ohayou gozaimasu, mina-san!

Kali ini, saya diberikan tugas untuk membuat API CRUD sederhana menggunakan Framework Laravel dan Testing API menggunakan POSTMAN sekaligus memaparkan tutorialnya. Teman malam mingguan kalau kata Pak Nur (Dosen Pemrograman Web saya). 🙂

Sebelum itu, kita perlu tau dulu sedikit banyaknya mengenai API, bukan api yang panas dan membakar ya:D Tapi, jembatan atau bahkan diibaratkan seperti waitress di restoran. Yap, API (Application Programming Interface) adalah media berkomunikasi dan penghubung antara aplikasi yang berbeda.

Dalam era digital saat ini, hampir semua aplikasi modern menggunakan API untuk:

  1. Memungkinkan microservices architecture
  2. Integrasi dengan layanan pihak ketiga
  3. Memisahkan frontend dan backend
  4. Mendukung multiple platform (web, mobile, desktop)

Kali ini, saya punya ide untuk bikin money tracker (sekalian bisa dipake biar ga boros-boros amat :’)) menggunakan API POSTMAN.

SETUP PROJECT

Untuk membuat proyek folder baru, kita bisa menggunakan Cmder untuk mengetikkan prompt. Unduh Cmder melalui tautan ini.

Selanjutnya, jika diperlukan, kita dapat memindahkan atau menentukan jalur/path folder dengan perintah seperti berikut.

Setelah itu, kita bisa mengetik perintah composer create-project laravel/laravel api-project untuk membuat proyek folder laravel baru dengan nama api-project.

Jika berhasil, maka akan tampil folder baru seperti ini.

Lanjut, kita dapat mengetik cd api-project untuk berpindah ke jalur spesifik, yakni ke file latihan yang akan kita buat.

Kita dapat memulai server lokal di browser web dengan perintah php artisan serve.

Jika sudah seperti ini, maka server sudah dimulai dan bisa dicek di browser web.

DATABASE & MIGRATION

Selanjutnya, buat migration dengan perintah php artisan make:migration create_transaction_table dan php artisan make:migration create_users_table seperti berikut. Ini gunanya untuk membuat file migrasi database, yaitu instruksi struktur tabel (seperti transactions dan users) yang akan digunakan dalam CRUD API sederhana di Laravel, agar data bisa disimpan, dibaca, diubah, dan dihapus melalui Postman.

Lalu, isi file users table yang telah dibuat tersebut seperti berikut untuk membuat struktur tabel users di database, yang menyimpan data pengguna seperti nama, email, dan password agar aplikasi API CRUD sederhana di Laravel dapat mengelola data user (misalnya: register, login, dan relasi data transaksi jika dikembangkan lebih lanjut).

Transactions table berikut berfungsi untuk membuat struktur tabel transactions di database yang menyimpan data transaksi seperti id, kategori, deskripsi, jumlah uang, dan tanggal transaksi, agar API CRUD sederhana di Laravel bisa menyimpan, menampilkan, mengubah, dan menghapus data transaksi melalui Postman.

Lalu, ketik php artisan migrate:fresh untuk menghapus semua tabel di database lalu menjalankan ulang seluruh migrasi dari awal, agar struktur tabel dalam API CRUD sederhana di Laravel tetap bersih dan sesuai saat diuji atau dikembangkan.

Untuk melihat database, bisa ke localhost, jika berhasil, tampilan databasenya akan seperti ini.

Bagian .env nya juga disesuaikan seperti ini.

MODEL

Kemudian, kita perlu membuat php artisan make:model Transaction untuk membuat file model Transaction, yang merepresentasikan tabel transactions di database dan digunakan Laravel untuk berinteraksi dengan data transaksi dalam proses CRUD API, seperti menyimpan, mengambil, memperbarui, dan menghapus data lewat controller.

Models/Transaction.php berfungsi untuk membuat model Transaction yang merepresentasikan tabel transactions, sehingga Laravel dapat mengelola data transaksi (create, read, update, delete) dalam API CRUD sederhana, termasuk relasinya dengan tabel users, dan dapat digunakan saat menguji lewat Postman.

User.php berguna untuk membuat model User yang merepresentasikan tabel users, agar Laravel dapat mengelola data pengguna seperti nama, email, dan password, serta menangani autentikasi jika diperlukan dalam API CRUD sederhana yang diuji nantinya.

API ROUTES

Selanjutnya adalah api.php. Kode ini berfungsi untuk mendefinisikan rute-rute API yang menghubungkan URL dengan fungsi di TransactionController, agar aplikasi Laravel dapat menangani permintaan CRUD transaksi (tampil, tambah, lihat detail, ubah, hapus) melalui Postman.

API CONTROLLER

Setelah dibuat menggunakan php artisan:makecontroller. TransactionController berfungsi sebagai controller TransactionController yang menangani semua logika CRUD transaksi, seperti menampilkan semua data, menyimpan data baru, menampilkan detail, mengubah, dan menghapus transaksi, agar API Laravel dapat merespons permintaan dari Postman dengan benar.

API RESOURCES/TRANSFORM DATA

Transaction Resource ini berfungsi untuk mengatur format respon JSON dari data transaksi, agar saat data ditampilkan melalui API Laravel di Postman, tampilannya menjadi lebih rapi dan terstruktur, seperti format tanggal dan jumlah uang.

Validasi dan Error Handling
Form Request Validation

Kedua kode di atas berfungsi untuk memvalidasi input data transaksi saat proses menyimpan (StoreTransactionRequest) dan mengubah (UpdateTransactionRequest), agar data yang dikirim ke API Laravel melalui Postman sesuai aturan yang ditentukan dan menampilkan pesan error yang jelas jika terjadi kesalahan.

Kode Handler.php di atas ini berfungsi untuk menangani dan menyesuaikan tampilan pesan error agar API Laravel merespons dalam format JSON yang rapi dan jelas, saat terjadi error seperti:

  • 422: Validasi gagal
  • 404: Data atau endpoint tidak ditemukan
  • 401: Tidak terautentikasi
  • 500: Error server lainnya

Sehingga ketika diuji melalui Postman, pengguna API akan menerima respon error yang sesuai standar REST API, bukan halaman HTML.

PROVIDERS

Next, ada AppServiceProvider.php, berfungsi untuk mendaftarkan dan menjalankan konfigurasi global aplikasi, seperti binding service, pengaturan default database, atau pengaturan tambahan lain saat aplikasi Laravel dijalankan.

Sedangkan kode di bawah ini adalah RouteServiceProvider.php untuk mengatur rute API dan web, memastikan bahwa semua rute di file routes/api.php menggunakan prefix /api, dan rute di routes/web.php menggunakan middleware web.

Server dicoba untuk dimulai kembali agar berjalan optimal dan pembaruan diikutsertakan.

UJI COBA POSTMAN

Saatnya mengujicobakan kode laravel ke Postman. Jika belum memiliki aplikasi, bisa diunduh di sini.

Awalnya, kita bisa buat proyek baru. Tersedia beberapa tutorial dan template di Postman ini untuk memudahkan. Nah, karena prosesnya adalah CRUD, maka ada 4 action, POST, PUT, GET, dan DELETE.

  1. POST

Post sama dengan upload data baru. Kita bisa memasukkan URL server yang dijalankan, lalu isi headers sesuai gambar di atas, tekan body, pilih raw untuk memasukkan data dan json untuk melihat hasilnya.

Di sini, terlihat bahwa sambungan ke Postman berhasil dan data berhasil diinputkan.

Namun, input kategori hanya bisa pemasukan/pengeluaran. Selain itu, akan muncul peringatan untuk memperbaiki inputan.

2. GET

Get adalah aksi untuk mengambil data tertentu. Kita bisa memasukkan URL server yang dijalankan, lalu tambahkan /(data berapa yang mau kita ambil), misal /1, serta pilih json untuk melihat hasilnya.

3. PUT

Put adalah update, yakni memperbarui data yang sudah ada. Kita bisa memasukkan URL server yang dijalankan, lalu isi headers sesuai gambar di atas, masukkan data mana yang ingin diupdate, tekan body, pilih raw untuk memasukkan data dan json untuk melihat hasilnya. Jika sesuai, maka data akan diperbarui.

4. DELETE

Delete adalah hapus, menghapus data yang sudah ada. Kita bisa memasukkan URL server yang dijalankan, memasukkan data mana yang ingin dihapus, tekan body, pilih json untuk melihat hasilnya.

Jika data ada yang telah dihapus dan ingin diambil kembali, maka akan muncul warning yang memberitahu bahwa data dengan id tertentu yang telah dihapus tidak dapat ditemukan.

Sekian pembahasan mengenai tugas malam minggu membuat money tracker saya, proyek lengkap dapat dilihat di Github saya berikut.

Leave a comment, please! Thank you^^

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top