PHP LUMEN VALIDATION DAN ERROR HANDLING

PHP Lumen Validation dan Error Handling

Image result for php lumen

   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.



Screenshot_3



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



Screenshot_4.png


   Maka response yang dikeluarkan akan menjadi seperti berikut :



Screenshot_5.png


   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.
Screenshot_6.png


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

Screenshot_7.png

Kita coba dengan mengirimkan parameter null, seperti dibawah ini :
Screenshot_8

Maka response akan seperti berikut.
Screenshot_9.png
Sekarang kita coba dengan mengisi paramter yang tidak valid.
Screenshot_10.png
Maka response akan seperti berikut.
Screenshot_11.png

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

Implementasi Validasi Fungsi Update
Selanjutnya kita akan menerapkan validasi pada fungsi update, kita ubah script pada function update menjadi berikut.
Screenshot_13
   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.
Screenshot_14

  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.
Screenshot_15

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

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.
Screenshot_17.png

   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:
Screenshot_18.png

   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.

Screenshot_19.png

   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.

Screenshot_20.png

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

Screenshot_21.png


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

Screenshot_22


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

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

   Sekian Tutorial dari saya mohon maaf jika banyak kesalahan, selamat mencoba.

Comments

Popular posts from this blog

Microservice

TUTORIAL UNITY - PRO BUILDER

Component vue.js