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
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
https://www.postman.com/ lalu lakukan instalasi seperti biasaberikut 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
- GET - Mengambil Semua Products
- GET - Mengambil Product Berdasarkan ID
- PUT - Update Product
- DELETE - Hapus Product
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
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
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
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