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
Selanjutnya kita panggil endpoint GET http://localhost:8000/posts/10, maka tampilannya akan seperti ini
selesai
selamat mencoba!!!!!
No comments:
Post a Comment