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

Daftar endpoint untuk data post

Beautify Response Pada Fungsi Read All

Disini kita akan mebuat respon dari endpojtn "/post" menjadi lebih efektif dengan cara membuang respon yang tidak kita perlu seperti: first_page_url, from, last_page, to  Pertama kita akan mengubah response nya terlebih dahulu.



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


3. Kemudian jalankan "php artisan migrate" pada terminal 
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



mari kita coba melakukan pada postman tanpa mengirim parameter atau parameternya kosong



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


selanjutnya kita akan coba menaambahkan dengan parameter yang benar


Lalu setelah berhasil pada fungsi create kita akan coba menambahkan pada fungsi update juga 


Lalu kita coba dengan parameter yang kosong maka hasilnya akan sperti ini 


Lalu kita akan coba dengan parameter yang salah


Selanjutnya kita akan coba merubah data dengan parameter yang benar



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


Sekarang kita akan merubah responsenya kedalam bentuk JSON , pertma kita buka dulu file "app/Exceptions/Handler.php " lalu tambahkan seperti gambar di bawah ini 


Lalu ubah juga fungsi render menjadi seperti gambar dibawah ini 


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 :


Sekian tutorial mengenai Lumen Service App - Validation dan Error Handling, mohon maaf apabila banyak sekali kekurangan

Terima kasih
Next Post Previous Post
No Comment
Add Comment
comment url