DAFTAR ISI
Definisi Web Service
Web service adalah metode berkomunikasi antara dua elektronik device yang berjalan di atas World Wide Web. Atau dengan kata lain Web Service adalah fasilitas yang disediakan suatu website yang berupa layanan yang dapat diakses oleh sistem lain.
Web service adalah sistem software yang dirancang untuk mendukung interopabilitas mesin-ke-mesin yang dapat berinteraksi melalui jaringan. Web servłce memiliki antarmuka yang dijelaskan dalam format mesin-processable (khusus WSDL).
Sistem lain berinteraksi dengan Web service dalam cara ditentukan oleh deskripsi dengan menggunakan pesan SOAP, biasanya disampaikan menggunakan HTTP dengan serialisasi XML dalam hubungannya dengan Web lainnya yang terkait standar.
Contoh kasus penggunaan Web service misal saya ingin membuat aplikasi android yang menggunakan data dinamis, sedangkan data itu terdapat di suatu web site tertentu. Untuk menggunakan data tersebut tentunya kita dapat melakukan insert secara manual terhadap sistem database lokal pada android, tapi hal ini akan menjadi sangat merepotkan developer ataupun user nantinya.
Solusi yang paling baik adalah membuat suatu API web service yang memungkinkan aplikasi android itu dapat mengakses data dari halaman website tersebut. Dengan menggunakan solusi ini maka sewaktu-waktu ketika data yang ada di web site diubah maka data yang terdapat pada aplikasi android pun ikut berubah tanpa harus melakukan updating database sistem lokal android.
Arsitektur Sederhana Web Service
Dalam arsitektur web service API merupakan middleware yang digunakan untuk menjadi web service yaitu sebagai jembatan pertukaran data antara beberapa perangkat/aplikasi.
Web Service PHP dengan JSON
JSON (JavaScript Object Notation) adalah format pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat berdasarkan bagian dari Bahasa Pemprograman JavaScript, Standar ECMA-262 Edisi ke-3 - Desember 1999.
JSON merupakan format teks yang tidak bergantung pada bahasa pemprograman apapun karena menggunakan gaya bahasa yang umum digunakan oleh programmer keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, Python dll.
Oleh karena sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa pertukaran-data. JSON terbuat dari dua struktur:
- Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan sebagai objek (object), rekaman (record), struktur (struct), kamus (dictionary), tabel hash (hash table), daftar berkunci (keyed list), atau associative array.
- Daftar nilai terurutkan (an ordered list of values). Pada kebanyakan bahasa, hal ini dinyatakan sebagai larik (array), vektor (vector), daftar (list), atau urutan (sequence).
Hal ini pantas disebut demikian karena format data mudah dipertukarkan dengan bahasa-bahasa pemprograman yang juga berdasarkan pada struktur data ini.
Latihan
1. Buat Database Akademik dan Tabel mhs untuk menampung data
ID | Nama | Alamat | Umur |
---|---|---|---|
1 | Ganjar | Jl. Solo | 24 |
2 | Doni | Jl. Paris | 30 |
3 | Dewa | Jl. Singosari | 25 |
Latian 2 Buat Folder "webservice" dalam htdocs untuk menyimpan file-file latihan.
Yang pertama: Buat file koneksi.php yang isinya:
<?php class Koneksi { //DB name : akademik protected $dns = "mysq1:host=localhost;dbname=akademik"; protected $db_user = "root"; protected $db_pass = "" ; protected $konek = ""; public function getKon() { try { $db=new PDO($this->dns, $this->db_user, $this->db_pass); $db->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if ($db===FALSE){ throw new Exception ("Koneksi Gagal"); }else{ $this->konek=$db; }catch (Exception $e){ echo "Error : ".$e->getMessage(); } return $this->konek; } public function closeKon() { $this->konek = NULL; //diskonek Koneksi } /* Kita sekalian buat Class active record simple untuk fetch data ke DB */ class ActiveRecord extends Koneksi{ public function fetchObject($sql){ $clone=array(); try { $data = $this->getKon() ->prepare($sql); $data->setFetchMode(PDO::FETCH_INTO, $this); $data->execute(); /* karena fetch ingin sbg Object, maka kita harus clone hasilnya */ while ($result $data->fetch()) { $clone[] = clone $result; } $this->closeKon(); }catch(PDOException $e){ echo $->getMessage(); } echo $clone; } }
Yang kedua: Buat file mhs.php yang isinya:
<?php require_once "koneksi.php"; class mhsWebService{ protected $name; protected $umur; //misal API yg dikasih untk client protected $API ='khss8363621'; public function setName($name){ $this->name= $name; } public function getName(){ return $this->name; } public function setUmur($umur){ $this->umur = $umur; } public function getUmur(){ return $this->umur; } public function validateAPI($api){ if ($this->API !== $api) return false; return true; } public function getMhs(){ $objAr= new ActiveRecord(); /*Query blm pake bind params, silahkan edit sendiri */ $sql = "SELECT * FROM mhs WHERE 1=1"; if ($this->getName()){ $sql .="AND name LIKE '%{$this->getName()}%'"; } if ($this->getUmur()){ $sql .="AND name LIKE '%{$this->getUmur()}%'"; } return $objAR->fetchObject($sql); } }
Yang ketiga: Buat file web service.php yang isinya:
<?php //tipe data nya json yah, kalau mau xml silahkan ubah sendiri header ('Content-Type: application/json'); require_once "koneksi.php"; require_once "mhs.php"; // load Class MhsWebService $hasil = array(); $s_name = $_GET['name']; $s_umur = $_GET['umur']; $s_API = $_GET['API']; $mhs = new MhsWebService(); if($mhs->validateAPI ($s_API)){ // kirim params" nya $mhs->setName($s_name); $mhs->setUmur($s_umur); $data $mhs->getMhs(); //print_r ($data); reset($data); $i=0; //saya pake while, kalau mau foreach silahkan :D while(list(,$r) = each($data)){ $hasil[$i]['nama'] = $r->nama; $hasil[$i]['umur'] = $r->umur; $hasil[$i]['alamat']= $r->alamat; ++$i; } //hanya untk flag saja $hasil['status'] = TRUE; }else{ $hasil['status'] = FALSE; } echo json_encode($hasil); ?>
Yang keempat: Buat file akses web_service.php yang isinya:
<html> <head> <style> body{width:200px} </style> </head> <body> <h2>MHS Web Service</h2> <hr/> <form method="get" action=""> Name : <input type="text" name="name" /> Umur : <input type="text" name="umur" /> <button type="submit">Search</button> </form> <?php if($_GET){ $s_name = isset($_GET['name']) ? $_GET['name'] : ''; $s_umur = isset($_GET['umur']) ? $_GET['umur'] : ''; $url="http://".$_SERVER['HTTP_HOST']."/test_php/web_service.php?API=khss8363621&name={$s_name}&umur={$s_umur}"; $fields = array ( 'name' => $s_name, 'umur' => $s_umur ); $data = http_build_query($fields); $context = stream_context_create(array( 'http' => array( 'method' => 'GET', 'header' => 'Content-type: application/x- www-form-urlencoded', 'content' => $data, ) )); $result = file_get_contents($url, false, $context); // decode json nya ke array $vr = json_decode($result, true); echo "<pre>"; print_r($vr); echo "<pre>"; ?> </body> </html>
Akses Hasil Programnya dengan alamat localhost/webservice/akses_web_service.php:
Informasi yang dimunculkan masih dalam bentuk array biasa
Tugas
- Buatlah web service menggunakan PHP PDO dengan JSON untuk mengakses data dari table matakuliah.
Kode Nama_mk SKS Kurikulum Praktik MKK001 Pemrograman Web 3 2017/2018 T MKP001 Prakt. Pemrograman 1 2017/2018 Y MKK002 Kalkulus 3 2017/2018 T