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/products/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/products/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:
1. Sebetulnya kita sudah melakukan error handling, lihat pada function show, update dan destroy, kita akan menemukan code seperti dibawah ini:
Error response yang diberikan oleh Lumen secara default dalam bentuk HTML. Sekarang kita akan melakukan Error handling dan memberikan response JSON.
2. 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.
3. Sebagai contoh kalau kita panggil endpoint GET http://localhost:8000/products/10, maka tampilannya akan seperti ini
4. Sekarang kita akan mengubah response tersebut menjadi response dalam bentuk JSON.
5. Buka file app/Exceptions/Handler.php diatas Class definition tambahkan code dibawah ini.
6. Buka file app/Exceptions/Handler.php ubah function render menjadi seperti dibawah ini.
7. Buka file .env ubah APP_DEBUG=true manjadi APP_DEBUG=false
8. Restart server
9. Ketika kita panggil endpoint POST http://localhost:8000/products/10, maka tampilannya akan seperti ini
10. kita panggil endpoint GET http://localhost:8000/products/10, maka tampilannya akan seperti ini
11. Silahkan coba-coba dengan case yang lain
Hatur nuhun :)
0 komentar:
Posting Komentar