Jumat, 04 Desember 2020

PHP Lumen Validation And Error Handling

Mohon maaf bila gambar rusak anda bisa unduh file pdf disini validation.pdf

Pada Bab ini Kita akan membuat service menggunakan PHP Lumen yang bisa melakukan handling Validation dan negative Case. 

Tujuan praktek ini adalah untuk :

1.      Mampu implementasi validation menggunakan Lumen

2.      Mampu melakukan Negative Case handling menggunakan LumenMampu memberikan informasi yang baik dan relevan ketika mengalami error validasi dan error negative case

A.    Beautify Response Pada Fungsi Read All

Ikuti Langkah-langkah dibawahini untuk membuat response beautify Implementasi fungsi ini adalah fungsi index di BanksController.php :

1.      Saat ini kalau kita memanggil endpoint http://localhost:8000/banks, 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/BanksController.php, ubah function index menjadi seperti dibawah ini.

               

Pada baris dibawah ini, nilai 2 bisa anda ubah. Nilai ini adalah berapa jumlah rows yang akan ditampilkan dalam satu halaman.

            

4.      Ketika kita panggil endpoint http://localhost:8000/banks, maka tampilanya seperti dibawah ini. 

          

 

 

B.     Validasi Fungsi Create Dan Update

Untuk membuat validasi pada fungsi create, mari kita ikuti langkah-langkah berikut ini:

Saat ini fungsi create memiliki beberapa parameter, diantaranya adalah:

    - Nama_Bank

    - Nama

    - Saldo

Parameter tersebut belum divalidasi, artinya semua nilai bisa kita masukan ke parameter tersebut. Kalau kita coba untuk memberikan value ‘’ pada parameter tersebut, maka aplikasi akan tetap melakukan INSERT ke db. Sekarang kita akan melakukan validasi untuk parameter tersebut dengan rule seperti dibawah ini :

   - Nama_Bank:

     a. Tidak boleh kosong (required)

     b. Harus memiliki minimum 3 karakter

   - Nama

     a. Tidak boleh kosong (required)

     b. Harus memiliki minimum 5 karakter

   - Saldo:

     a. Tidak boleh kosong (required)

     b. Harus memiliki minimum 6 karakter

Itulah rule validasi yang akan kita implementasikan.

Kita akan melakukan pengecekan pada semua parameter, jika validasi lolos maka kita akan melanjutkan untuk INSERT ke database.Jika validasi tidak lolos, kita akan memberikan response error dengan status code 400 Bad Request.

 

 

 

 

 

 

 

 

C.    Implementasi Validasi Fungsi Create

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

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

           

2.      Kita coba dengan mengirimkan parameter null, seperti dibawah ini :

           

 

3.      Kita coba dengan mengisi paramter yang tidak valid

           

4.      Kita coba dengan mengisi parameter yang valid

           

 

 

D.    Implementasi Validasi Fungsi Update

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

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

           

2.      SIlahkan dicoba beberapa kasus seperti pada fungsi create

           

 

3.      Kita coba dengan mengisi parameter yang tidak valid

          

 

4.      coba dengan mengisi parameter yang valid

           

E.     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/banks/10 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/bank/1 hanya menerima method GET, PUT dan DELETE.

         

Error response yang diberikan oleh Lumen secara default dalam bentuk HTML. Sekarang kita kan melakukan Error handling dan memberikan response JSON

F.     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:

            

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.

2.      Sebagai contoh kalau kita panggil endpoint GET http://localhost:8000/bank/10 , maka tampilannya akan seperti ini

Sekarang kita akan mengubah response tersebut menjadi response dalam bentuk JSON.

3.      Buka file app/Exceptions/Handler.php diatas Class definition tambahkan code dibawah ini. Line 12-15.

           

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

          

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

6.      Restart server dengan perintah php -S localhost:8000 -t public

7.      Ketika kita panggil endpoint POST http://localhost:8000/bank/10 , maka tampilannya akan seperti ini

          

 

8.      kita panggil endpoint GET http://localhost:8000/bank/10 , maka tampilannya akan seperti Ini

           


Tidak ada komentar:

Posting Komentar

Cloud Computing

  Tujuan Mempelajari Cloud Computing Setelah membaca sedikit terkait pengenalan dasar Cloud Computing. Saya berharap dengan mengikuti mata k...