Lumen Service App - Validation dan Error Handling
Pada artikel kali ini kita akan melanjutkan web service menggunakan PHP menggunakan framework Lumen dari Laravel. Saat ini kita sudah mengimplementasikan endpoint yang akan kita gunakan, yakni seperti ini
Ketika kita panggil endpoint "http://localhost:8000/post", maka tampilanya seperti
dibawah ini. Kita lihat sekarang response nya menjadi lebih clean, dan lebih nyaman
untuk dibaca oleh programmer. Nilai dari next_page_url pada line 5 yakni
http://localhost:8000/post?page=2, ini adalah url untuk mendapatkan rows di halaman
kedua. Untuk lanjut ke halaman ke-3 dan seterus nya, kita hanya perlu mengganti
parameter page=[halaman].
Validasi Fungsi Create
Untuk membuat validasi pada fungsi create, mari kita ikuti langkah-langkah berikut ini:
Saat ini fungsi create memiliki beberapa parameter, diantaranya adalah:
- title (tidak boleh kosong, min 5 karakter)
- content (tidak boleh kosong, min 10 karakter)
- status (tidak boleh kosong dan hanya bisa diisi draft atau published)
- user_id (tidak boleh kosong dan hanya bisa diisi sesuai table users)
Parameter tersebut belum divalidasi, artinya semua nilai bisa kita masukan ke parameter
tersebut. Kalau kita coba untuk memberikan value kosong atau null ("") pada parameter tersebut, maka
aplikasi akan tetap melakukan INSERT ke db. Sekarang kita akan melakukan validasi
untuk parameter tersebut dengan aturan yang telah dijelaskan sebelumnya
Kita akan melakukan pengecekan pada setiap parameter yang diinput, jika validasi lolos maka kita
akan melanjutkan untuk memasukan data ke database. Jika validasi tidak sesuai maka kita akan memberikan response error dengan status code 400
Bad Request.
Karena dalam aturan / rule kita harus memasukan user_id sesuai table user maka kita akan membuat table users terlebuh dahulu
1. Membuat database migration dengan menjalankan command "php artisan make:migration create_users_table" pada terminal
2. Buka file database/migrations/...create_users_table.php, dan ubah menjadi seperti
dibawah in
4. kemudian masukan data via phpmyadmin atau mysql ke table "users" telah dibuat
Lalu kembali pada PostController buka fungsi store mari kita tambahkan fungsi validasi yang kita inginkan seperti sintaks di bawah ini
Bisa kita lihat bahwa kita mendapat pesan bahwa field dibutuhkan untuk memasukan data post menandakan parameter yang kita masukan tidak ada
kita akan coba memasukan parameter yang salah
Implementasi Error Handling
kalau di perhatikan pada kotak merah , Sebetulnya kita sudah melakukan error handling. Fungsi abort(404) diatas (contoh pada function show) adalah salah satu implementasi error handling. Hanya saja implementasi ini belum memberikan error response JSON, masih berbentuk HTML yang merupakan fungsi bawaan dari Lumen.
kita akan coba memanggil endpoint "http://localhost:8000/post/100" dengan method GET menggunakan postman
maka kita akan mendapatkan error seperti ini dalam bentuk html
Setelah itu buka file ".env" lalu rubah "APP_DEBUG=true" manjadi "APP_DEBUG=false", jalankan ulang kembali aplikasi dan coba kita panggil endpoint "http://localhost:8000/post/100" dengan method GET menggunakan postman maka tampilannya akan seperti ini
lalu kita coba panggil kembali endpoint "http://localhost:8000/post/100" dengan method POST menggunakan postman maka tampilannya akan seperti ini
Lalu kita coba membuat error code dengan menghapus titik koma pada sintak dibawah yang diberi tanda garis merah,
Setelah itu kita akan mencoba memanggil endpint "http://localhost:8000/post/100" dengan method GET menggunakan postman maka tampilannya akan seperti ini :