Membangun REST API services pada Server berbasis JSON dan POSTGRESQL (PSQL).

website terbaik dengan postgresql

Disela sela kesibukan saya sebagai Web Development interfaces. Akan saya paparkan sedikit pengalaman saya dalam membangun REST service , dengan berbasis pada database lama dan tangguh yang datang dari keluarga linux yaitu Postgresql (PSQL), karena saya bisa postgresql juga di dapat dari KOLU (komunitas linux upn ) – beliau adalah mas dwi cahyo wibisono sang master saya dahulu ketika saya menjabat programer komunitas hehehehe….

Sebenarnya mau saya bahas dalam C++ / C objective ke PHP nya saja, tapi takut menjadi tutorial tak terbaca alias terbengkalai. Karena di dunia programer lebih laris dan bahasa yang banyak di kuasai adalah php maka di kesempatan ini saya gunakan PHP saja biar sama-sama gatuk … tingkatan programing untuk advanced / junior programer biar tambah naek level.. Lanjut !!

Require tools (aplikasi yang di butuhkan):
1. Xampp + phppgadmin / Hosting berbasis PSQL (di sini saya gunakan hostmonster, jadi live coding aja berdasarkan pengalaman. )
2. Adobe Dreamweaver
3. browser Mozilla , Chrome dan lain lain.

 

Langkah Pengerjaan.
1. Siapkan kopi + rokok
2. Membuat koneksitas pada database psql
3. Membuat kerangka data pada psql.
4. Membuat file index
5. Membuat file json dari array.
6. Mengakses data hasil generate database.

 

Apa itu REST ??
Secara singkat dapat saya jelaskan , Sebuah layanan atar server dalam berbagi data. (enteng kan ?? ).
Mengapa PSQL (postgresql) ??
Database yang hampir punah keberadaanya ini tapi solid di sisi keamanan kerberos,data storagenya dll. Maka saya rasa salah satu database terbaik di kelasnya. Dan penggunaan postgresql sendiri hanya terdapat pada hostmonster sebagai media hostingnya (yang saya tahu si…. !!! ).untuk lebih lengkapnya silakan tanya di dukun era modern jaman sekarang saja sebut saja MBAH GOOGLE.
Mekanisme / cara kerja REST ??
Mekanisme rest pada server dapat di lihat pada gambar di bawah ini, yaitu bagaimana sebuah server dapat melakukan aksi komunikasi data dengan server yang lain dengan kata lain storage database ke dalam bentuk lain yaitu json atau xml.

methode

Sekilas tentang JSON ¬
Karena teknik ini membutuhkan pengetahuan tentng json pada php sekilas maka ane pengen ngulik json lagi. Json terdiri dari 2 metode dasar intinya, json encode dan json decode, hampir sama dengan encryp lhoooo…. Dalam proses encode json dapat di buat dengan methode di bawah ini dapat di simpan dengan nama json1.php pada server/folder ente htdocs/nama_folder atau wwww/nama_folder atau public_html/nama_folder .

json_encode(...// some array());

 

Contoh:

$motor = array('jenis_motor'=>array('Yamaha'=>'scorpio','Honda'=>'CBR250','Kawasaki'=>'ninja250','Suzuki'=>'Thunder250'));
echo json_encode($motor); 

Hasilnya :

{“jenis_motor”:{“Yamaha”:”scorpio”,”Honda”:”CBR250″,”Kawasaki”:”ninja250″,”Suzuki”:”Thunder250″}}

Json_decode()

Fungsi ini di gunakan untuk membalik hasil dari encode jika hasil json benar maka akan di hasilkan dalam bentuk string yang di butuhkan,dengan pemanggilan secara array.

 

 Buat folder / domain /subdomain

Mengapa koq harus aya suruh ente buat, beda dengan yang tadi ??  untuk menguji koneksitas transfer data dari server ke client supaya ente lebih dong….   hehehehe…

Isikan file di bawah ini.

<?php
$dapat = file_get_contents('http://localhost/rest/json.php');
$data_motor = json_decode($dapat,TRUE);
echo $data_motor['jenis_motor']['Yamaha'];
?>

 

Hasil

scorpio

 

OK, sudah bisa semua ya?? Super sekali….  ok langsung saja kita buat database, karena surdah pernah bermain postgresql + apache2 di linux dan xampp + phppgadmin maka saya tidak akan menggunakan hal tersebut, saya implementasikan langsung pada studi kasus pada webhost yang sinar-soft gunakan.

Kalo pada localhost bisa di ketik sql di bawah ini.

CREATE DATABASE test_rest OWNER root; // membuat database test_rest dengan kepemilikan root

 

Kalo pada webhost dapat ente buat seperti ini.

buatdb

Ok,setelah di buat databasenya, dapat segera di alter user role atau grant, untuk mengubah permisionnya , sehingga dalam membuka database pada phppgadmin dapat connect !! ,ribet y,postgresql…

aksesphppgadmin

Setelah bisa membuka phppgadmin ente,dengan sedikit bantuan mbah google.. maka ane coba buat tabel dengan format sebagai berikut…

jenistab

Lalu klik create.dan lanjutkan dengan langkah insert (di sini saya pilih insert repeat).ane gunakan 3 x repeat.hehehehe….

insert

Lalu pilih menu browse di menu seperti pada gambar di bawah ini.(setelah itu jangan lupa pilih menu priveleges dan centang bagian public)

data_insert

PHP koneksi ke psql.

Pada koneksitas ini saya membutuhkan 2 file. Connect.php sebagai file meyimpan koneksi tersebut, dan index.php sebagai media load data yang akan di encode dengan json tentunya.

 

Isi dari Connect.php.

<?php
$db_connect = pg_connect("host=localhost dbname=api_rest user=root password=123456?");
if(!$db_connect)
{
	echo "Server is Down !!";
}
?>

 

Isi dari file index.php pada folder server ente.

<?php
Include “connect.php”;
$a = "SELECT *FROM motor";
$result = pg_query($db_connect, $a) or die('Query failed: ' . pg_last_error());

  // fetch data pada table
  $line = pg_fetch_array($result, null, PGSQL_ASSOC);
  if(isset($_GET['q']))
  {
  	if($_GET['q'] == $line['jenis_motor'])
  	{
//repeat select data pada table
   		$motor_250 = array('besar'=>array($line['jenis_motor']=>$line['torsis']));
   		echo json_encode($motor_250);
   	}
   	else
   	{
   		echo "error : jenisnya";
   	}
  }
  else
  {
  	echo "error : status";
  }


  pg_free_result($result);

  // koneksi close
  pg_close($db_connect);
?>

 

Buka browser ente bro lalu panggil / ketik pada url “localhost/rest/?q=scorpio” – tanpa petik.

Hasilnya:

hasil-akhir

Bersambung di part 2 ya bro !!! mengenai json_decodenya – sisi client.

 

Demikian Tutorial yang sederhana ini saya buat dengan keadaan yang serba cepat dan mudah , semoga bermanfaat bagi dunia delopment dan programer website yang telah di tekuni / pelajari – cryme gembel @sinarsoft1.

 

 

Tutorial Offline dapat di download di sini

Leave a Reply

Your email address will not be published. Required fields are marked *