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

  1. Membuat service yang bisa mem-validasi Content-Type header request. Content-Type header yang diterima adalah:

-       application/json

  1. Accept Header dikirim ketika melakukan fungsi GET (Read), POST (Create), PUT (Update), DELETE (Delete)
  2. 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:

Method (HTTP Verbs)
Endpoint
Header Content Negotiation
GET
/posts
Accept
GET
/post/{postId}
Accept
POST
/users
Accept, Content-Type
PUT
/post/{postId}
Accept, Content-Type
DELETE
/post/{postId}
Accept


 Pertama yang harus dilakukan adalah mendownload terlebih dahulu library dari xml menggunakan composer.



 Method Create
Lanjut modifikasi method store, dan 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. 

buka PostController.php




Coba di Postman dan atur methodnya menjadi POST isi tab Body->Form Data seperti gambar dibawah ini



Setelah itu kita perlu mengisi parameter di bagian headers dengan key 'accept' yang aplikasinya 
'application/json'



atau 'application/xml'




Selanjutnya mengubah methode Show,Create dan Delete


Method Show

 pastikan seperti dibawah ini




Lakukan test tanpa parameter Accept Header.


Test menggunakan parameter application/json


Test menggunakan parameter application/xml


Method Update
 
 Pastikan seperti dibawah ini


 Lakukan test tanpa parameter Accept Header.


 Test menggunakan parameter application/json


 Test menggunakan parameter application/xml


 Methode Destroy


 Pastikan seperti dibawah ini





Lakukan test tanpa parameter Accept Header.




 Test menggunakan parameter application/json





 Test menggunakan parameter application/xml





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


Dan 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 di 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.

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



Coba ubah parameter Accept dan juga Conten-Type nya menjadi application/json. Dan hasilnya seperti ini



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





Alhamdulillah Selesai

Komentar

Postingan Populer