PHP Lumen Content Negotiation

 PHP Lumen Content Negotiation





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)

 Pertama lakukan adalah mendownload terlebih dahulu library dari xml menggunakan composer.
Ketik di CMD
composer require ext-simplexml

 

Method Create

Lanjut modifikasi method store, jadi kita akan tentukan format response berdasarkan Acccept Header. Maksudnya bagaimana ? jadi ketika accept header kita set value nya menjadi application/json, maka response akan berbentuk format json, sedangkan ketika kita set value nya menjadi application/xml, maka response dalam bentuk xml. Langsung saja kita arahkan ke method store, dan modifikasi script menjadi berikut. di PostController.php


Lakukan test pada Postman, masukkan URL endpoint untuk melakukan fungsi store, atur method nya menjadi POST. Masuk ke tab body lalu isi from datanya.
lanjut klik send, dan responnya


Mengapa demikian ? karena kita telah memberikan kondisi dimana perlu adanya parameter tambahan dibagian Headers dengan key ‘Accept’ yang value nya ‘application/json’ atau ‘application/xml’. Untuk itu kita masuk ke tab header lalu isi parameter Accept nya application/json
 
Maka responnya sebagai berikut

Sekarang kita coba ubah valuenya menjadi ‘application/xml’. 
Dan hasilnya

Selanjutnya kita akan mengubah method show, update dan delete

Method Show


Lakukan test tanpa parameter Accept Header.

Masukkan parameter application/json.



Masukkan parameter application/xml.

Method Update



Lakukan test tanpa parameter Accept Header.

Masukkan parameter application/json.

Masukkan parameter application/xml.

Method Destroy




Lakukan test tanpa parameter Accept Header.

Masukkan parameter application/json.


Masukkan parameter application/xml. 


Selanjutnya kita akan mengimplementasikan Content-Type Header pada function update, jadi selain perlu parameter Accept, kita juga akan menerapkan parameter Content-Type, pertama kita kunjungi method update kemudian modifikasi scriptnya seperti berikut.



Jadi setelah kita cek parameter Accept nya, kita pun cek parameter Content-Type nya. Jika tidak ada parameter Content-Type, maka responnya adalah Unsupported Media Type. Kita lakukan test pada postman, masuk ke tab body, kemudia klik raw, ketikkan format json dalam bentuk key dan value untuk melakukan perubahan pada table posts id . Maka response akan seperti berikut karena belum kita beri parameter di headers nya.

Sekarang kita berikan parameter Accept di headernya, maka response akan seperti berikut.

Mengapa ? karena kita telah memberikan kondisi pada method update untuk menambahkan parameter kedua yaitu Content-Type, maka sekarang kita tambahkan parameter Content-Type, sehingga response akan seperti berikut.

 Silakan coba ubah parameter Accept dan juga Conten-Type nya menjadi application/xml. Dan hasilnya seperti ini

 Selesai.

Comments

Popular posts from this blog

PHP Lumen Service Docs

Interoperabilitas - Web Service