PHP LUMEN VALIDATION DAN ERROR HANDLING
PHP Lumen Validation dan Error Handling
Di postingan kali ini akan membahas bagaimana menerapkan validation dan error handling pada laravel lumen. Kita lanjutkan project kita sebelumnya tentang content negotiation, pertama kita buka controller post yang berada pada folder app/Http/Controllers/PostsController.php.Tetapi sebelum kita edit controllernya, kita coba test menggunakan postman terlebih dahulu untuk endpoint method index. Response yang dikeluarkan adalah seperti berikut.

Ada beberapa data yang tidak di perlukan seperti: first_page_url, from, last_page, to. Maka kita akan mengubah response nya terlebih dahulu.

Maka response yang dikeluarkan akan menjadi seperti berikut :

Nilai 2 pada paginate(2) bisa anda ubah-ubah. Nilai ini adalah berapa jumlah rows yang akan ditampilkan dalam satu halaman, http://localhost:8000/posts?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].
Ketika kita panggil endpoint http://localhost:8000/posts?page=2, maka hasilnya harus berbeda dengan endpoint http://localhost:8000/posts. Seperti dibawah ini. Kita lihat value dari next_page_url pada line 5 adalah null, karena sudah tidak ada lagi rows yang perlu ditampilkan di halaman berikut nya.

Validasi Fungsi Create
Kali ini kita akan melakukan validasi inputan data pada method store, modifikasi method store menjadi seperti berikut.

Kita coba dengan mengirimkan parameter null, seperti dibawah ini :

Maka response akan seperti berikut.

Sekarang kita coba dengan mengisi paramter yang tidak valid.

Maka response akan seperti berikut.

Tetapi jika kita isi dengan parameter yang valid, maka data akan berhasil tersimpan.

Implementasi Validasi Fungsi Update
Selanjutnya kita akan menerapkan validasi pada fungsi update, kita ubah script pada function update menjadi berikut.

Pada fungsi update ini kita melakukan validasi id dahulu sebelum ke validasi inputan, dimana jika id nya tidak ditemukan, maka response nya adalah abort atau not found tanpa melalui pengecekan validasi inputan. Tetapi jika id nya valid, langsung masuk ke validasi inputan. Kita coba test dulu dengan id yang tidak valid.

Ketika kita masukkan parameter id yang tidak ada dalam data, maka response nya adalah abort, tetapi jika kita masukkan parameter id yg valid, maka response nya seperti berikut.

Sekarang kita coba lakukan update data dengan memasukkan data yang valid.

Gambaran Umum Error Handling
Saat ini kita hanya fokus pada positive case saja, kita belum memikirkan apabila ada negative case. Kita tidak menghiraukan apakah request parameter yang dikirim sudah sesuai dengan yang kita harapkan atau belum. Bagaimana seandainya user mengirim request dengan Method yang salah? Bagaimana apabila ID yang dikirim tidak ada di database ketika melakukan Update, Delete atau Show? Pada dasarnya Lumen sudah menyediakan Error Handling untuk menangani masalah tersebut. Sebagai contoh, jika kita mengakses http://localhost:8000/posts/1 dengan method POST, maka Lumen akan mengembalikan error response Invalid Method seperti gambar dibawah ini.

Kenapa ini terjadi? Karena di file routes/web.php, kita mendefinisikan url ini http://localhost:8000/posts/1 hanya menerima method GET, PUT dan DELETE. Error response yang diberikan oleh Lumen secara default dalam bentuk HTML. Sekarang kita akan melakukan Error handling dan memberikan response JSON. Untuk implementasi Error Handling, mari kita ikuti langkah-langkah berikut ini:
Sebetulnya kita sudah melakukan error handling, lihat pada function show, update dan
destroy, kita akan menemukan code seperti dibawah ini:
destroy, kita akan menemukan code seperti dibawah ini:

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. Sebagai contoh kalau kita panggil endpoint GET http://localhost:8000/post/10, maka tampilannya akan seperti ini.

Sekarang kita akan mengubah response tersebut menjadi response dalam bentuk JSON. Buka file app/Exceptions/Handler.php diatas Class definition tambahkan code dibawah ini. Line 12-15.

Buka file app/Exceptions/Handler.php ubah function render menjadi seperti dibawah ini.

Buka file .env ubah APP_DEBUG=true manjadi APP_DEBUG=false.

Restart server. Ketika kita panggil endpoint POST http://localhost:8000/post/10, maka tampilannya akan seperti berikut.

kita panggil endpoint GET http://localhost:8000/post/10, maka tampilannya akan seperti berikut.

Sekian Tutorial dari saya mohon maaf jika banyak kesalahan, selamat mencoba.
Comments
Post a Comment