Contoh Webservice / API Sederhana dengan PHP MySQL

Rani termotivasi membuat webservice dan API khusus untuk menghubungkan koneksi ke database MySQL yang ada di  web hosting. Sebagaimana kita ketahui (mungkin 😏) kebanyakan hosting tidak dapat melakukan koneksi langsung ke database, biasanya hanya setting koneksi internal/local saja. Maka dari itu salah satu cara untuk koneksi ke database yang ada di web hosting adalah dengan webservice dan API.

Sumber: pexels.com

Sepaket webservice dan API yang Rani buat ini untuk penggunaan global diantaranya:

  • mengecek apakah koneksi dapat/berhasil dilakukan.
  • menarik dataset dalam bentuk JSON dengan mengirimkan query SQL SELECT.
  • mengeksekusi Query INSERT, UPDATE, dan DELETE.
  • mendapatkan 1 nilai tertentu dengan mengirimkan query SELECT.

Code ini dibuat dengan PHP native dan bisa temen-temen dowload disini ya: Download API

Setelah selesai mengunduh, file dalam bentuk zip tersebut bisa teman-teman extract terlebih dahulu. Kemudian diupload / disimpan di web hosting sebagaimana teman-teman mengupload website / web aplikasi biasa.

Untuk keperluan menjelaskan contoh di sini, Rani pakai server local dulu. Jadi kita simpan  di dalam folder htdocs xampp, seperti gambar berikut. Untuk keamanan temen-temen bisa ubah nama foldernya, di sini Rani tetap menggunakan nama webapi untuk mempermudah penjelasan.



Mari kita mulai bahas satu per satu mulai dari conn.php dan clearconn.php. Kedua file ini berkaitan dengan buka tutup koneksi. Di sini Rani buat atribut koneksi sebagai nilai yang di post di parameter API, tapi teman-teman juga bisa membuka "comment" untuk menuliskan variable $user, $psw, dan $db secara hardcode.

conn.php

<?PHP
$host   = "localhost";
/*
$user="";
$psw="";
$db  = "";
*/
if (ISSET($_POST['us'])){$user   = $_POST['us'];}
if (ISSET($_POST['pw'])){$psw    = $_POST['pw'];}
if (ISSET($_POST['db'])){$db     = $_POST['db'];}
if (ISSET($_POST['test'])){$test = $_POST['test'];} ELSE {$test = 0;}

//conection to database
$conection=@mysql_connect($host,$user,$psw);
if (!$conection){
die("Could not connect to server. " . mysql_error());
echo "Could not connect to server. ";
exit;
}
$select=@mysql_select_db($db);
if (!$select){
die("Could not connect to database. " . mysql_error());
echo "Could not connect to database. ";
include ("clearconn.php");
exit;
}
if ($test == 1) {echo "sukses";mysql_close();}
//end of this file
?>

File conn.php akan dipanggil di hampir semua file php yang ada di folder web api untuk membuka koneksi dan dapat juga digunakan untuk memeriksa apakah koneksi bisa terhubung atau tidak. Dalam file ini juga memanggil clearconn.php untuk menutup dan menghapus deklarasi variable-variable koneksi.

clearconn.php

<?php
$host = null;
$user = null;
$psw  = null;
$db   = null;
$conection = null;
$select = null;
unset($host);
unset($user);
unset($psw);
unset($db);
unset($conection);
unset($select);
?>

Nah klo Rani lagi ngerjain back end development biasanya pakai postman untuk memeriksa apakah API kita jalan dengan menggunakan postman. Kita akan cek dan melihat bagaimana cara kerja API ini temen-temen bisa download Postman nya di link berikut:

Pertama kita akan coba mengecek settingan koneksi kita apakah dapat terhubung atau tidak.


1. Klik + New untuk menambah tab baru.
2. Pilih tipe request POST.
3. Ketikan alamat URL tempat webapi diupload, tambahkan nama file conn.php.
4. Karena tipe request post, kita pilih opsi Body dan form-data untuk memasukan parameter.
5. Kemudian masukan key dan value, dan jangan lupa untuk mencentang checkbox jika parameter tersebut ingin ikut di post. 
Parameter di API ini adalah variable-variable koneksi:
  • us --> username untuk login ke database
  • pw --> password untuk login ke database
  • db --> nama database yang akan digunakan
  • test --> beri nilai 1 untuk melakukan test dengan API ini agar mendapatkan nilai sukses/gagal.
6. Klik tombol Send.
7. Hasil akan ditampilkan di bagian respon di bawah.


Selanjutnnya getdata.php adalah untuk mendapatkan dataset dalam bentuk JSON. Disini kita tetap mengirimkan 4 parameter koneksi dan parameter sql yang merupakan query SELECT.

getdata.php

<?php

include "conn.php";
if (ISSET($_POST['sql'])){$sql = $_POST['sql'];} else {$sql = "";}
$sql = str_replace("\'","'",$sql);
$keys = array();

$query = mysql_query($sql);
$imax = mysql_num_fields($query); //row count
$i = 0;
while ($i < $imax) {
array_push($keys, mysql_field_name($query, $i));
$i = $i + 1;
}

while($dt=mysql_fetch_array($query)){
$i = 0; $values = array();
while ($i < $imax) {
    array_push($values, $dt[$i]);
$i = $i + 1;
}
$data[] = array_combine($keys, $values);  
}

if (!isset($data)) {$data[] = array("data" => "0");}  

 //collect data result in array
 $json = array(
    'data' => $data
   );
 
mysql_close();

 //convert data to JSON
 echo json_encode($json);
?>

Sebagai contoh Rani akan menggunakan tabel category yang ada di database latihan, yang penampakannya kira-kira seperti berikut ini:


Kemudian kita langsung saja coba di postman.


1. Klik + New untuk menambah tab baru.
2. Pilih tipe request POST.
3. Ketikan alamat URL tempat webapi diupload, tambahkan nama file getdata.php.
4. Karena tipe request post, kita pilih opsi Body dan form-data untuk memasukan parameter.
5. Kemudian masukan key dan value, dan jangan lupa untuk mencentang checkbox jika parameter tersebut ingin ikut di post. 
Parameter di API ini adalah variable-variable koneksi:
  • us --> username untuk login ke database
  • pw --> password untuk login ke database
  • db --> nama database yang akan digunakan
  • query--> masukan nilai string berisi query SELECT * FROM Category
6. Klik tombol Send.
7. Hasil akan ditampilkan di bagian respon di bawah.


Lalu ada API getfieldvalue.php yang digunakan untuk mengambil 1 nilai saja dari database dengan mengirimkan parameter SQL Query yang menghasilkan 1 nilai saja (1 baris dan 1 kolom data). Parameter-parameter untuk koneksi tetap digunakan.

getfieldvalue.php

<?php
if (ISSET($_POST['sql'])){$sql = $_POST['sql'];} else {$sql = "";}
        $sql = str_replace("\'","'",$sql);
include "conn.php";
if (trim($sql)!= "")
{
$qry = mysql_query($sql, $conection) or die ("gagal query".mysql_error()."<br>".mysql_errno());
$data = mysql_fetch_array($qry);
$fieldvalue = $data[0];
echo $fieldvalue;
mysql_close();
} else 
{
        //mysql_close();
echo "no data.".$db;
}
?>

Sebagai contoh, dengan menggunakan postman untuk mencari nilai nama kategori berdasarkan kodenya.



1. Klik + New untuk menambah tab baru.
2. Pilih tipe request POST.
3. Ketikan alamat URL tempat webapi diupload, tambahkan nama file getfieldvalue.php.
4. Karena tipe request post, kita pilih opsi Body dan form-data untuk memasukan parameter.
5. Kemudian masukan key dan value, dan jangan lupa untuk mencentang checkbox jika parameter tersebut ingin ikut di post. 
Parameter di API ini adalah variable-variable koneksi:
  • us --> username untuk login ke database
  • pw --> password untuk login ke database
  • db --> nama database yang akan digunakan
  • sql--> masukan nilai string berisi query SELECT categoryname FROM category WHERE categorycode = 'C002'.
6. Klik tombol Send.
7. Hasil akan ditampilkan di bagian respon di bawah.


Terakhir adalah runquery.php untuk menjalankan query INSERT, UPDATE, dan DELETE. 


runquery.php

<?php
$sqlstr   = str_replace("\'","'",$_POST['qry']);
//call conn.php
include "conn.php";
if ($sqlqry = mysql_query($sqlstr,$conection)) { 
   echo "1";
} else {
echo "gagal query: ".mysql_error()."<br>".mysql_errno().".";
}
mysql_close();
?>


Kita akan mencoba INSERT 1 kategori baru. Untuk perbandingan, ini adalah kondisi awal tabel category:


Kita akan menambahkan C003 Peralatan | Tools.


1. Klik + New untuk menambah tab baru.
2. Pilih tipe request POST.
3. Ketikan alamat URL tempat webapi diupload, tambahkan nama file runquery.php.
4. Karena tipe request post, kita pilih opsi Body dan form-data untuk memasukan parameter.
5. Kemudian masukan key dan value, dan jangan lupa untuk mencentang checkbox jika parameter tersebut ingin ikut di post. 
Parameter di API ini adalah variable-variable koneksi:
  • us --> username untuk login ke database
  • pw --> password untuk login ke database
  • db --> nama database yang akan digunakan
  • qry--> masukan nilai string berisi query INSERT INTO category (categorycode, categoryname) VALUES ('C003', 'Peralatan | Tools').
6. Klik tombol Send.
7. Hasil akan ditampilkan di bagian respon di bawah, jika muncul angka 1 maka berhasil. Jika error akan muncul pesan error.

Kita lihat di database sudah ditambahkan data kategori yang baru.




Post a Comment

0 Comments