Kelas Laravel: Studi Kasus RESTful API
Pengenalan
- Nama: Eko Kurniawan
- Pekerjaan: Technical Architect di E-commerce terbesar di Indonesia
- Pengalaman: >12 tahun
- Sharing di: Website & YouTube channel Programmer Zaman Now
- Kontak & Sosial Media: Email, Telegram, LinkedIn, Facebook, Instagram, YouTube, Telegram channel, TikTok
- Kelas pra-requisite: PHP, MySQL, OpenAPI, Laravel dasar
Studi Kasus: Kontak Management RESTful API
Fitur Utama
- User Management
- Register User
- Login User
- Update User
- Get User
- Logout User
- Contact Management
- Create Contact
- Update Contact
- Get Contact
- Search Contact
- Remove Contact
- Address Management
- Create Address
- Update Address
- Get Address
- List Address
- Remove Address
User Management
User Data
- username
- password
- name
- token
API Endpoints
- Register User: POST /api/users/register
- Request: username, password, name
- Response: User info (excluding password), status code 201
- Login User: POST /api/users/login
- Request: username, password
- Response: User info, token
- Update User: PATCH /api/users/update
- Request: name, password (optional)
- Response: Updated user info
- Get User: GET /api/users/current
- Request: Authorization header
- Response: Current user info
- Logout User: DELETE /api/users/logout
- Request: Authorization header
- Response: Success status
Contact Management
Contact Data
- first name
- last name
- email
- phone
API Endpoints
- Create Contact: POST /api/contacts
- Request: first name, last name, email, phone
- Response: Contact info, status code 201
- Update Contact: PUT /api/contacts/{id}
- Request: first name, last name, email, phone (optional)
- Response: Updated contact info
- Get Contact: GET /api/contacts/{id}
- Request: Authorization header
- Response: Contact info
- Search Contacts: GET /api/contacts
- Query Parameters: name, email, phone, page, size
- Response: Paginated contact list
- Remove Contact: DELETE /api/contacts/{id}
- Request: Authorization header
- Response: Success status
Address Management
Address Data
- Street
- City
- Province
- Country
- Postal code
API Endpoints
- Create Address: POST /api/contacts/{contact_id}/addresses
- Request: Street, City, Province, Country, Postal code
- Response: Address info, status code 201
- Update Address: PUT /api/contacts/{contact_id}/addresses/{address_id}
- Request: Street, City, Province, Country, Postal code
- Response: Updated address info
- Get Address: GET /api/contacts/{contact_id}/addresses/{address_id}
- Request: Authorization header
- Response: Address info
- List Addresses: GET /api/contacts/{contact_id}/addresses
- Request: Authorization header
- Response: List of addresses
- Remove Address: DELETE /api/contacts/{contact_id}/addresses/{address_id}
- Request: Authorization header
- Response: Success status
Implementasi dan Testing
Menyiapkan Database
- Buat database
belajar_laravel_resful_api
di MySQL
- Konfigurasi
.env
file untuk database connection
- Jalankan
php artisan migrate
untuk membuat tabel
- Tambahkan
user
, contact
, dan address
models dengan relasi yang sesuai
- Implementasi middle ware untuk cek token user
- Tambahkan unit tests untuk setiap endpoint dengan skenario sukses dan gagal
- Gunakan client tools (Postman, Insomnia, atau HTTP client) untuk testing manual API endpoints
Testing Manual
- Gunakan token yang didapat dari endpoint login untuk mengakses API lain
- Cek hasil dari setiap endpoint di client tool untuk memastikan API bekerja dengan benar
- Lakukan pengujian dengan berbagai skenario seperti data valid, data tidak valid, dan permintaan tanpa token
Kesimpulan
- Kelas ini fokus pada pembuatan RESTful API dengan Laravel melalui studi kasus kontak management
- Best practice meliputi implementasi unit testing dan testing manual dengan client tools
- Materi terus diupdate sesuai dengan perkembangan Laravel
- Disarankan untuk eksplorasi studi kasus lain seperti to-do list, blog, user registration, dll.
Referensi Lanjutan
- Programmer Zaman Now website dan YouTube channel untuk video learning lainnya
- Dokumentasi Laravel: https://laravel.com/docs
Semoga sukses dalam belajar Laravel dan menerapkan pengetahuan untuk membuat aplikasi dunia nyata!