Kembali ke Beranda

Praktikum Laravel: 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

Konsep Dasar API

API (Application Programming Interface) adalah sekumpulan aturan dan protokol yang memungkinkan aplikasi berbeda untuk saling berkomunikasi. API digunakan untuk integrasi layanan, mendukung multiplatform, dan pemisahan frontend-backend.

Komponen Utama API

  • Request: URL/Endpoint, HTTP Method, Headers, Body
  • Response: Status Code, Headers, Body

Jenis-Jenis API

  • Web API
  • REST API
  • GraphQL API
  • SOAP API
  • Library API
  • Operating System API
  • Database API

RESTful API

REST (Representational State Transfer) adalah arsitektur web service dengan prinsip seperti client-server, stateless, cacheable, uniform interface, layered system.

Struktur URL REST

GET    /api/users
GET    /api/users/1
POST   /api/users
PUT    /api/users/1
DELETE /api/users/1

HTTP Methods

  • GET - Mengambil data
  • POST - Menambahkan data
  • PUT - Mengupdate seluruh data
  • PATCH - Mengupdate sebagian data
  • DELETE - Menghapus data

Kode Status HTTP

  • 2xx: Berhasil (200 OK, 201 Created)
  • 4xx: Kesalahan Client (404 Not Found, 422 Unprocessable Entity)
  • 5xx: Kesalahan Server (500 Internal Server Error)

Langkah-Langkah Pembuatan API di Laravel

1. Inisialisasi Proyek

composer create-project laravel/laravel api-project
cd api-project
php artisan serve
Inisialisasi Project

2. Database dan Migration

php artisan make:migration create_products_table

Isi migration dengan kolom: name, description, price, stock

php artisan migrate

3. Model

php artisan make:model Product

Tambahkan fillable dan casts

4. Routing API

tambahkan file api.php di routes

5. Controller API

php artisan make:controller ProductController --api

Implementasikan method index, store, show, update, destroy dengan response JSON.

6. API Resources (Data Transformation)

Fitur yang memungkinkan untuk mentransformasi model data atau collection menjadi format JSON yang konsisten dan mudah dikustomisasi untuk API response. API Resource berfungsi sebagai layer transformasi antara model Eloquent dan JSON response yang dikirim ke client sehingga dapat digunakan untuk Mengontrol format output JSON, Menyembunyikan field sensitive, Menambahkan field computed dan Membuat response yang konsisten.

Membuat Resource

php artisan make:resource ProductResource

Digunakan untuk memformat response JSON agar lebih rapi.

Menggunakan Resource di Controller

Silahkan ubah method index dan show menggunakan API Resource

7. Validasi dengan Form Request

php artisan make:request StoreProductRequest

Tambahkan rules dan messages pada file tersebut.

impelementasi Pada function store dan modifikasi kode sebelumnya

8. Exception Handling

php artisan make:exception Handler 

Atur response JSON untuk error pada Handler.php seperti validation error atau model not found.

Testing API dengan Postman

  • Download Postman pada website https://www.postman.com/ lalu lakukan instalasi seperti biasa
  • berikut Tampilan Postman setelah terinstall

    Sebelum Melakukan eksekusi di Postman, Buka folder bootstrap\cache\app.php

    tambahkan kode api: __DIR__.'/../routes/api.php', dibawah web.php supaya terbaca oleh postman

    1. GET - Mengambil Semua Products
    2. Method: GET
      URL: http://localhost:8000/api/products
      Headers:
      Accept: application/json
      Content-Type: application/json
                    

      jika Data kosong akan menampilkan gambar seperti dibawah

      jika ada isi Data nya, maka akan seperti gambar dibawah ini

    3. GET - Mengambil Product Berdasarkan ID
    4. Method:  GET
      URL: http://localhost:8000/products/{id}
      contoh:http://localhost:8000/products/1
      Headers:
      Accept: application/json
      Content-Type: application/json

      mencari data berdasarkan id

    5. PUT - Update Product
    6. Method:  PUT
      URL: http://localhost:8000/products/{id}
      contoh:http://localhost:8000/products/1
      Headers:
      Accept: application/json
      Content-Type: application/json

      mengUpdate data berdasarkan id yang diinginkan

    7. DELETE - Hapus Product
    8. Method:  DELETE
      URL: http://localhost:8000/products/{id}
      contoh:http://localhost:8000/products/1
      Headers:
      Accept: application/json
      Content-Type: application/json

      menghapus data produk berdasarkani id yang diinginkan

    Selamat! Anda telah berhasil