API dan RESTful API

API dan RESTful API

Tujuan Pembelajaran

  • Memahami konsep dasar API dan manfaatnya
  • Menjelaskan arsitektur RESTful API
  • Mengimplementasikan API endpoints menggunakan Laravel
  • Melakukan testing dan debugging API
  • Menerapkan best practices dalam pengembangan API

Apa itu API?

API (Application Programming Interface) merupakan sekumpulan aturan dan protokol yang memungkinkan aplikasi berbeda platform untuk berkomunikasi dan saling terintegrasi.

Mengapa API Penting?

API adalah media komunikasi antara aplikasi yang berbeda. Hampir semua aplikasi modern saat ini menggunakan API untuk:

  • Integrasi dengan layanan pihak ketiga
  • Memisahkan frontend dan backend
  • Mendukung multiple platform (web, mobile, desktop)
  • Memungkinkan microservices architecture

Komponen Utama API

1. Request (Permintaan)

  • URL/Endpoint
  • HTTP Method (GET, POST, PUT, DELETE, dsb)
  • Headers
  • Body/Payload

2. Response (Respons)

  • Status Code (200 OK, 201 Created, 404 Not Found, 422 Unprocessable Entity, dll)
  • Headers
  • Body/Data (berisi konten JSON atau XML)

Jenis-Jenis API

  • Web API – Menggunakan protokol HTTP/HTTPS
  • REST API – Mengikuti arsitektur REST
  • GraphQL API – Menggunakan query language untuk API
  • SOAP API – Protokol berbasis XML
  • Library API – Interface untuk library/framework
  • Operating System API – Interface dengan sistem operasi
  • Database API – Interface untuk akses ke database

RESTful API

REST (Representational State Transfer) adalah arsitektur untuk merancang web service. REST bukan protokol atau standar, melainkan seperangkat prinsip desain.

Prinsip REST

  • Client-Server – Pemisahan antara client dan server
  • Stateless – Setiap request bersifat independen
  • Cacheable – Response dapat disimpan untuk efisiensi
  • Uniform Interface – Antarmuka konsisten untuk seluruh API
  • Layered System – Memungkinkan arsitektur berlapis dan scalability
  • Code on Demand (opsional) – Server dapat mengirimkan kode executable ke client

Selanjutnya, kita akan mengimplementasikan RESTful API menggunakan Laravel.

langkah-langkah

Silakan install kembali laravel terlebih dahulu, karena kita tidak akan menggunakan project sebelumnya.

Pertama-tama kita akan melakukan migrasi tabel. Setelah memastikan database dapat terhubung pada project laravel baru, buka terminal/CMD project kemudian ketikkan perintah berikut.

Database Structure

Setelah itu lakukan pengeditan kode pada file product_table seperti berikut:

Database Structure

Langkah selanjutnya, kita akan membuat model Product. Model ini digunakan untuk mewakili data produk dalam aplikasi Laravel. Dengan menggunakan model ini, kita dapat berinteraksi langsung dengan tabel products di database, seperti melakukan operasi create (menambah data), read (mengambil data), update (memperbarui data), dan delete (menghapus data).

Database PHP Code

Silahkan atur kode pada file model tersebut seperti berikut:

Langkah selanjutnya adalah mendefinisikan API Routes, yaitu rute yang digunakan untuk mengakses endpoint API dari aplikasi. Dalam Laravel, rute API didefinisikan di file routes/api.php. untuk itu kita akan menginstall route apinya dahulu

Setelah itu, lakukan pengeditan pada d=file api.php tersebut, seperti berikut:

Langkah selanjutnya adalah membuat API Controller, yaitu komponen yang berfungsi sebagai penghubung antara request dari client dan data yang ada di database. Controller ini akan menangani logika bisnis untuk setiap endpoint seperti menampilkan data, menyimpan data baru, mengubah data, dan menghapus data. Untuk itu silahkan install controllernya dahulu dengan command berikut:

Pada bagian API Controller, kita membuat ProductController yang bertugas menangani seluruh logika proses CRUD (Create, Read, Update, Delete) terhadap data produk. Controller ini berfungsi sebagai penghubung antara permintaan (request) dari client dan interaksi dengan model serta database. Method index() digunakan untuk mengambil dan menampilkan seluruh data produk. Method store() menangani penyimpanan data produk baru ke dalam database setelah divalidasi menggunakan StoreProductRequest. Method show() digunakan untuk menampilkan detail satu produk berdasarkan ID. Method update() digunakan untuk memperbarui data produk tertentu yang sudah ada. Sedangkan method destroy() digunakan untuk menghapus data produk. Silahkan atur kode pada file controller tersebut seperti berikut:

Langkah selanjutnya adalah membuat Resource untuk mengatur bagaimana data produk akan ditampilkan saat dikembalikan oleh API. Silahkan buat resource dengan command berikut:

Alert PHP Code

Silahkan atur kode pada tiap file resource yang baru saja dibuat. Pada ProductResource, kita menentukan field-field yang akan ditampilkan seperti id, name, description, price, stock, created_at, dan updated_at. Dengan resource ini, kita dapat memastikan bahwa data yang dikembalikan oleh API memiliki format yang konsisten dan sesuai standar. Tanggal created_at dan updated_at juga diformat agar mudah dibaca, misalnya menjadi format Y-m-d H:i:s

Untuk memastikan bahwa data yang dikirim oleh client sudah sesuai sebelum disimpan ke dalam database, kita menggunakan Form Request Validation. Untuk itu silahkan buat command berikut:

Silahkan lakukan pengeditankode didalam request validation yang baru saja dibuat. Di dalam class StoreProductRequest, kita mendefinisikan aturan validasi pada method rules(), seperti mewajibkan name, description, price, dan stock, serta memastikan bahwa harga dan stok tidak bernilai negatif. Kita juga dapat menyesuaikan pesan error melalui method messages() untuk memberikan umpan balik yang lebih informatif kepada pengguna.

Langkah berikutnya adalah menambahkan Global Exception Handler. Dengan memodifikasi method render() pada file app/Exceptions/Handler.php, kita dapat menangani error secara terpusat dan memberikan response JSON yang konsisten ketika terjadi kesalahan. Pada kode tersebut, jika request berasal dari API (yang menginginkan respons JSON), maka Laravel akan mendeteksi jenis exception yang terjadi. Misalnya, jika terjadi ValidationException, maka akan dikembalikan respons dengan status 422 dan detail error. Jika data tidak ditemukan (ModelNotFoundException), maka akan dikembalikan respons dengan status 404 dan pesan bahwa resource tidak ditemukan. Untuk itu silahkan buat folder bernama handler.php dengan direktori seperti berikut app/Exceptions/Handler.php. lalu silahkan isikan dengan kode berikut:

Mengakses API Products dengan Postman

Untuk memastikan API yang telah dibuat berjalan dengan baik maka perlu dilakukan percobaan mengakses API tersebut, untuk testing menggunakan POSTMAN, silahkan download dan install POSTMAN pada computer dan lakukan testing API yang telah dibuat. Berikut langkah-langkahnya:

Setelah selesai melakukan instalasi Postman, langkah berikutnya adalah menyiapkan JSON Server sebagai server simulasi untuk testing API. Untuk informasi lebih lengkap, Anda dapat mengunjungi dokumentasinya di https://www.npmjs.com/package/json-server. Buka Command Prompt (CMD) terlebih dahulu. Kemudian lakukan instalasi JSON Server dengan perintah berikut:

Setelah berhasil menginstal, buat file baru bernama database.json pada folder yang Anda inginkan. File ini akan berfungsi sebagai penyimpanan data JSON yang nantinya dapat diakses melalui Postman.

Jalankan JSON Server menggunakan perintah berikut di direktori tempat file database.json berada

a

Ketika URL tersebut diakses melalui browser atau Postman, maka akan menampilkan data yang ada pada file database.json.

Setelah berhasil menjalankan JSON Server, langkah selanjutnya adalah menggunakan Postman untuk menguji operasi CRUD (Create, Read, Update, Delete) pada data yang disimpan di database.json.

Pertama-tama, buka aplikasi Postman dan arahkan ke halaman Untitled Request. Untuk menambahkan data (Create), ubah metode HTTP dari GET menjadi POST, lalu masukkan URL endpoint JSON Server seperti http://localhost:3000/products. Setelah itu, buka tab Headers dan tambahkan key Content-Type dengan value application/json, seperti gambar berikut:

Di bagian Body, pilih opsi raw dan ubah formatnya menjadi JSON, lalu masukkan data produk dalam format JSON seperti berikut dan jalankan dengan tombol send

Untuk melihat seluruh data yang tersimpan (Read All), cukup ubah metode menjadi GET, gunakan endpoint yang sama, dan hapus isi body jika masih ada. Tekan Send, maka seluruh data yang ada akan ditampilkan.

Jika ingin melihat data berdasarkan ID tertentu (Read by ID), tambahkan ID data ke URL, contohnya http://localhost:3000/products/1, lalu klik Send untuk melihat data tersebut.

Langkah berikutnya adalah memperbarui data (Update). Untuk ini, ubah metode HTTP menjadi PUT, gunakan URL yang menyertakan ID data yang ingin diubah, seperti http://localhost:3000/products/1, lalu masukkan data yang telah diperbarui pada bagian body, tetap dalam format JSON. Misalnya:

Terakhir, untuk menghapus data (Delete), ubah metode menjadi DELETE dan gunakan URL dengan ID data yang ingin dihapus, seperti http://localhost:3000/products/1. Klik Send, maka data dengan ID tersebut akan dihapus dari database.json.

Melalui serangkaian langkah yang telah dilakukan, kita telah berhasil membangun dan menguji RESTful API menggunakan Laravel serta Postman sebagai alat bantu pengujian. Dimulai dari pemahaman dasar tentang konsep API dan arsitektur REST, kita melanjutkan dengan membuat model Product, mendefinisikan route khusus API, hingga membuat controller untuk menangani seluruh proses CRUD. Agar struktur data konsisten, kita juga membuat Resource class untuk memformat respons, serta menggunakan Form Request Validation untuk memastikan data yang masuk valid dan aman. Tambahan fitur Global Exception Handler membantu menampilkan pesan error yang lebih informatif dan ramah untuk pengguna. Setelah API selesai dibangun, kita menguji semua endpoint menggunakan Postman, dari mulai menambahkan data (POST), menampilkan semua data dan data berdasarkan ID (GET), memperbarui data (PUT), hingga menghapus data (DELETE). Semua proses berjalan lancar dan memberikan pemahaman praktis mengenai alur kerja API modern.