Sunday, November 10, 2019

Validation Error Handling




Tutorial kali ini akan membahas bagaimana menerapkan validation dan error handling pada laravel lumen. Kita lanjutkan project kita sebelumnya tentang content negotiation,Tujuan praktek ini adalah untuk:

1. Mampu implementasi validation menggunakan Lumen
2. Mampu melakukan Negative Case handling menggunakan Lumen
3. Mampu memberikan informasi yang baik dan relevan ketika mengalami error validasi dan error   negative case.

Persaratannya untuk kali ini kita harus menyelesaikan dulu modul dengan judul ‘PHP Lumen Rest CRUD pada tutorial sebelumnya.


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.

1. Saat ini kalau kita memanggil endpoint ​http://localhost:8000/posts​, maka tampilan response nya
    akan menjadi seperti ini.




2.  Kalau melihat dari response nya ada beberapa data yang tidak kita perlukan, seperti:
     first_page_url, from, last_page, to. Pertama kita akan mengubah response nya terlebih dahulu

3.  Buka file app/Http/Controllers/PostsController.php, ubah function index menjadi seperti ini


4. Ketika kita panggil endpoint ​http://localhost:8000/posts​, maka tampilanya seperti dibawah ini.
    Kita lihat sekarang response nya menjadi lebih clean, dan lebih nyaman untuk dibaca oleh         
    programmer.

maka hasilnya akan seperti dibawah ini.



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

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.



dan selesai untuk tahapan ini.



Validasi Fungsi Create

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




kemudian kita coba dengan mengirimkan parameter null, seperti dibawah ini:



maka hasilnya akan seperti ini


Kemudian kita coba dengan mengisi paramter yang tidak valid




maka hasilnya seperti berikut



kemudian kita isi parameter yang vailid


maka hasilnya seeprti berikut


dan selesai.


Implementasi Validasi Fungsi Update 


Untuk implementasi validasi pada fungsi update, mari kita ikuti langkah-langkah berikut ini:

Buka file app/Http/Controllers/PostsController.php, ubah function update menjadi seperti dibawah      ini


SIlahkan dicoba beberapa kasus seperti pada fungsi create


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.


Implementasi Error Handling

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:


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 bentukJSON.
Buka file app/Exceptions/Handler.php diatas Class definition tambahkan code dibawahini. 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: ketikan Ctrl+C untuk stop dan jalankan kembali


Ketika  kita panggil endpoint POST ​http://localhost:8000/posts/10​, maka tampilannyaakan seperti ini


Selanjutnya kita panggil endpoint GET ​http://localhost:8000/posts/10​, maka tampilannya akan seperti ini


selesai

selamat mencoba!!!!!

No comments:

Post a Comment

Architecture Microservices

  Microservice merupakan pengembangan dari Monolitik Arsitektur. Microservice ini merupakan kumpulan proses independen dan kecil yang ...