Sabtu, 02 November 2019

PHP Lumen Content Negotiation




Lumen adalah Micro-framework yang diciptakan pengembang Laravel untuk mengakomodasi kebutuhan developer yang ingin membuat aplikasi dalam skala lebih kecil dari Laravel. Karena banyak library yang dihilangkan dalam bundle source code, Lumen bisa dijadikan framework untuk membuat REST API.

Deskripsi
Tutorial ini melanjutkan project dari tutorial sebelum nya dengan nama ‘PHP Lumen Rest
CRUD'. Kita akan membuat service menggunakan PHP Lumen yang bisa melakukan Content
Negotiation. Tujuan praktek ini adalah untuk:
1. Mampu implementasi Content Negotiation menggunakan Lumen
2. Membuat service yang bisa mem-validasi Accept header request. Accept header yang
    diterima adalah:
    - application/json
    - application/xml
3. Membuat service yang bisa mem-validasi Content-Type header request. Content-Type
    header yang diterima adalah:
    - application/json
4. Accept Header dikirim ketika melakukan fungsi GET (Read), POST (Create), PUT
    (Update), DELETE (Delete)
5. Content-Type Header dikirim ketika melakukan fungsi POST (Create), PUT (Update)


Prasyarat
Harus menyelesaikan dulu modul dengan judul ‘PHP Lumen Rest CRUD'.


Endpoint

Dibawah ini adalah Endpoint yang akan implementasikan berdasarkan Restful API Design:

Fungsi Read All
Untuk membuat fungsi read all, mari kita ikuti langkah-langkah dibawah ini: 


1. Fungsi Read ini akan melakukan satu validasi, yakni:
- melakukan validasi Accept Header: hanya menerima application/json atau application/xml 
- Accept Header ini akan menentukan response format yang di kembalikan 





2. Buka file app/Http/Controllers/PostsController.php dan update function index menjadi seperti ini: Lihat line 14 & 16 - 28.




3. Buka aplikasi Postman untuk melakukan pengetesan. Dibawah ini adalah tampilan Postman ketika melakukan request tanpa mengirimkan Accept Request Header. Responnya adalah ‘Not Acceptable!’. Ini terjadi karena kita belum mengirimkan Accept Header. 




4. Sekarang kita tambahkan Request Header. Click tab Headers (disamping tab Body yang lagi aktif). Tambahkan Accept Header dengan value application/json. Ketika kita click Send, maka tampilannya akan seperti ini.




5. Sekarang kita coba ubah value Accept Header menjadi application/xml, maka respon nya akan tetap sama yaitu dalam bentuk JSON. Ini terjadi karena kita belum mengatur response berdasarkan Accept Header. 




Set Response Format
Di bagian ini kita akan melakukan setting response format berdasarkan pada Accept Header. Untuk melakukanya, mari kita ikuti langkah-langkah dibawah ini: 


1. Untuk implementasinya kita akan menggunakan library PHP yaitu SimpleXMLElement. 




2. Buka file app/Http/Controllers/PostsController.php dan update function index menjadi seperti ini: Lihat line 14 & 16 - 39. 




3. Buka aplikasi postman, kalau Accept Header nya adalah application/json, maka tampilannya seperti ini: 




4. Buka aplikasi postman, kalau Accept Header nya dalah application/xml, maka tampilannya seperti ini: 




Fungsi Create
Untuk membuat fungsi create, mari kita ikuti langkah-langkah berikut ini: 


1. Fungsi Create ini akan melakukan dua validasi, yakni: 
- melakukan validasi Accept Header: hanya menerima application/json atau application/xml 
- Melakukan validasi Content-Type Header: hanya menerima application/json 




2. Buka file app/Http/Controllers/PostsController.php dan update function store menjadi seperti ini: Lihat line . 




3. Buka aplikasi Postman untuk melakukan pengetesan. Dibawah ini adalah tampilan Postman ketika melakukan request tanpa mengirimkan Accept Request Header. Responnya adalah ‘Not Acceptable!’. Ini terjadi karena kita belum mengirimkan Accept Header. 




4. Sekarang kita tambahkan Request Header. Click tab Headers (disamping tab Body yang lagi aktif). Tambahkan Accept Header dengan value application/json. Ketika kita click Send, maka tampilannya akan seperti ini, response nya adalah ‘Unsupported Media Type’. Ini terjadi karena kita belum mengirimkan Content-Type Header. 




5. Sekarang kita tambahkan Content-Type Header. Tambahkan Content-Type Header dengan value application/json. Lihat gambar ini:




6. Kemudian kita akan mengatur parameter Post dalam bentuk JSON. Klik tab Body -> Pilih Raw -> Pada tanda panah ke bawah di paling kiri pilih JSON(application/json). Kemudian isi paramter JSON nya. Lihat Gambar.  




7. Klik tombol Send, maka tamplinya akan seperti ini. 

0 komentar:

Posting Komentar