RESPONSE API

 RESPONSE API

Kita akan membuat service menggunakan PHP Lumen yang bisa melakukan Content Negotiation yang bisa mem-validasi Accept header request, Accept header yang akan diterima adalah aplication/json dan aplication/xml. Membuat service yang bisa mem-validasi Content-Type header request, Content-Type header yang diterima adalah : aplication/json

1.      Endpoint

Di bawah 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


    
2.    
Fungsi Read All

1)      Fungsi Read ini akan melakukan satu validasi, yakni:

a.    Melakukan validasi Accept Header: hanya menerima application/json atau application/xml.

b.    Accept Header ini akan menentukan response format yang di kembalikan.

2)    Buka file app/Http/Controllers/MahasiswaController.php dan update function index menjadi seperti ini:

//Read data

    public function index(Request $req)

    {

        $acceptHeader = $req->header('Accept');

 

        if($acceptHeader === 'aplication/json' || $acceptHeader === 'aplication/xml'){

            $mahasiswa = Mahasiswa::OrderBy('id''ASC')->paginate(10);

 

            if($acceptHeader === 'aplication/json'){

                return response()->json($mahasiswa->items('data'),200);

            }else{

                $xml = new\simpleXMLElement('<post/>');

                foreach($mahasiswa->items('data') as $item){

                $xmlItem = $xml->addChild('mahasiswa');

 

                $xmlItem->addChild('id'$item->id);

                $xmlItem->addChild('nim'$item->nim);

                $xmlItem->addChild('nama'$item->nama);

                $xmlItem->addChild('jurusan'$item->jurusan);

                $xmlItem->addChild('alamat'$item->alamat);

                }

                return $xml->asXML(); 

            }

        }else{

            return response()->json('Not Accepted'406);

        }   

    }


3)    Buka aplikasi Postman untuk melakukan pengetesan. Dibawah ini adalah tampilan Postman ketika melakukan request tanpa mengirimkan Accept Request Header. Responnya adalah ‘Not Accepted!’. 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 dibawah ini.


    3.    Fungsi Create

1)      Fungsi Create ini akan melakukan satu validasi, yakni:

a.       melakukan validasi Accept Header: hanya menerima application/json atau application/xml.

b.      Melakukan validasi Content-Type Header: hanya menerima application/json

2)      Buka file app/Http/Controllers/MahasiswaController.php dan update function storeData menjadi seperti ini:

//Create Data

    public function storeData(Request $req)

    {

        $acceptHeader = $req->header('Accept');

 

        if($acceptHeader === 'aplication/json' || $acceptHeader === 'aplication/xml'){

            $contentTypeHeader = $req->header('Content-Type');

 

            if($contentTypeHeader === 'aplication/json'){

                $input = $req->all();

                $post = Mahasiswa::create($input);

 

                return response()->json($post200);

            } else {

                return response('Unsupported Media Type'413);

            }

        }else{

            return response('Not Accepted'406);

        }  

    }

3)      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 dibawah ini.

        4.    Fungsi Read Detail

1)      Fungsi Read ini akan melakukan satu validasi, yakni:

a.       melakukan validasi Accept Header: hanya menerima application/json atau application/xml.

b.      Accept Header ini akan menentukan response format yang di kembalikan.

2)      Buka file app/Http/Controllers/MahasiswaController.php dan update function showData menjadi seperti ini:

//Read data By Id

    public function showData(Request $req, $id)

    {

        $acceptHeader = $req->header('Accept');

 

        if($acceptHeader === 'aplication/json' || $acceptHeader === 'aplication/xml'){

            $mahasiswa = Mahasiswa::find($id);

 

            if($acceptHeader === 'aplication/json'){

                return response()->json($mahasiswa200);

            }else{

                $xml = new\SimpleXMLElement('<post/>');

                

                $xmlItem = $xml->addChild('Mahasiswa');

 

                $xmlItem->addChild('id'$mahasiswa->id);

                $xmlItem->addChild('nim'$mahasiswa->nim);

                $xmlItem->addChild('nama'$mahasiswa->nama);

                $xmlItem->addChild('jurusan'$mahasiswa->jurusan);

                $xmlItem->addChild('alamat'$mahasiswa->alamat);

                

                return $xml->asXML();

            }

        }else{

            return response('Not Accepted'406);

        }

        

    }

3)      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 dibawah ini.

        5.    Fungsi Update

1)      Fungsi Update ini akan melakukan satu validasi, yakni:

a.       melakukan validasi Accept Header: hanya menerima application/json atau application/xml.

b.      Melakukan validasi Content-Type Header: hanya menerima application/json

2)      Buka file app/Http/Controllers/MahasiswaController.php dan update function updateData menjadi seperti ini:

//Update Data

    public function updateData(Request $req, $id)

    {

        $acceptHeader = $req->header('Accept');

 

        if($acceptHeader === 'aplication/json' || $acceptHeader === 'aplication/xml'){

 

            $contentTypeHeader = $req->header('Content-Type');

 

            if($contentTypeHeader === 'aplication/json'){

                $input = $req->all();

                

                $post = Mahasiswa::find($id);

                

                $post->fill($input);

                $post->save();

                return response()->json($post200);        

            }else{

                return response('Unsupported Media Type'415);

            }

        }else{

            return response('Not Accepted'406);

        }

    }

        6.    Fungsi Delete

1)      Fungsi Delete ini akan melakukan satu validasi, yakni:

a.       melakukan validasi Accept Header: hanya menerima application/json atau application/xml.

2)      Buka file app/Http/Controllers/MahasiswaController.php dan update function deleteData menjadi seperti ini:

//Delete Data

    public function deleteData(Request $req, $id)

    {

        $acceptHeader = $req->header('Accept');

 

        if($acceptHeader === 'aplication/json' || $acceptHeader === 'aplication/xml'){

            

            $contentTypeHeader = $req->header('Content-Type');

            

            if($contentTypeHeader === 'aplication/json'){

                

                $post = Mahasiswa::find($id);

                

                $post->delete();

                

                $message = ['message' => 'Delete successfully''post_id' => $id];

                return response()->json($message200);

            }else{

                return response('Unsupport Media Type'415);

            }

        }else{

            return response('Not Accepted'406);

        }

    }

 












Komentar

Postingan populer dari blog ini

KONSEP, KELEBIHAN, KEKURANGAN CONTAINERIZATION BERSERTA TEKNOLOGI DAN STUDI KASUS CONTAINERIZATION

Mengapa Harus Belajar Cloud Computing ?

Setting Up VM and Domain