Delphi JSON Web Service API
Delphi JSON Web Service API
1. 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.
Struktur-struktur data ini disebut sebagai struktur data universal. Pada dasarnya, semua
bahasa pemprograman moderen mendukung struktur data ini dalam bentuk yang sama maupun
berlainan. Hal ini pantas disebut demikian karena format data mudah dipertukarkan dengan
bahasa-bahasa pemprograman yang juga berdasarkan pada struktur data ini.
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Larik adalah kumpulan nilai yang terurutkan. Larik dimulai dengan [ (kurung kotak buka) dan
diakhiri dengan ] (kurung kotak tutup). Setiap nilai dipisahkan oleh , (koma).
Nilai (value) dapat berupa sebuah string dalam tanda kutip ganda, atau angka, atau true atau
false atau null, atau sebuah objek atau sebuah larik. Struktur-struktur tersebut dapat disusun
bertingkat.
String adalah kumpulan dari nol atau lebih karakter Unicode, yang dibungkus dengan tanda
kutip ganda. Di dalam string dapat digunakan backslash escapes "\" untuk membentuk karakter
khusus. Sebuah karakter mewakili karakter tunggal pada string. String sangat mirip dengan
string C atau Java.
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Angka adalah sangat mirip dengan angka di C atau Java, kecuali format oktal dan heksadesimal
tidak digunakan.
Spasi kosong (whitespace) dapat disisipkan di antara pasangan tanda-tanda tersebut, kecuali
beberapa detil encoding yang secara lengkap dipaparkan oleh bahasa pemprograman yang
bersangkutan.
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
2. Web Service
Web service menurut W3.org mendefinisikan web service sebagai “sebuah software
aplikasi yang dapat teridentifikasi oleh URI dan memiliki interface yang didefiniskan,
dideskripsikan, dan dimengerti oleh XML dan juga mendukung interaksi langsung dengan
software aplikasi yang lain dengan menggunakan message berbasis XML melalui protokol
internet”.
Web service adalah sebuah sofware aplikasi yang tidak terpengaruh oleh platform, ia
akan menyediakan method-method yang dapat diakses oleh network. Ia juga akan
menggunakan XML untuk pertukaran data, khususnya pada dua entities bisnis yang berbeda.
Definisi lain : Web service adalah sistem software yang dirancang untuk mendukung
interopabilitas mesin-ke-mesin yang dapat berinteraksi melalui jaringan. Web service
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.
Dalam pengertian yang sederhana , XML Web Services dapat di definisikan sebagai
aplikasi yang diakses oleh aplikasi yang lain. Mungkin orang berpendapat itu semacam web
site, tetapi itu bukan demikian. Ada perbedaan – perbedaan yang membedakan dengan web
site.
WEB SITE
Memiliki web interface
Dibuat untuk ber interaksi langsung dengan user
Dibuat untuk bekerja pada web browser.
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
WEB SERVICES
Tidak memiliki interface yang bagus
Dibuat untuk ber interaksi langsung dengan applikasi yang lain baik beda OS / Konsep
sekalipun.
Dibuat untuk bekerja pada semua tipe client applikasi / perangkat device
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
API menggunakan bahasa yang lebih terstruktur dan mudah dimengerti daripada bahasa
system call. Hal ini sangat penting dalam hal editing dan pengembangan.
Mudah Dikembangkan
Dengan adanya API, memudahkan programmer untuk mengembangkan suatu system.
Data
Data
Software
Application
Data JSON Data API (PHP) Data DB MySQL
Develop With
Delphi
Data
Sesuai dengan gambar diatas, data bergerak dimulai dari Aplikasi yang dibuat oleh
Developper dengan tujuan untuk menghubungkan databasenya dan begitupula sebaliknya. Hal
ini dilakukan karena beberapa alasan yaitu :
1. Dikarenakan menggunakan webhosting gratisan, mysqlnya tidak dibukankan portnya
guna diremote melalui internet. Solusi menggunakan JSON dan API ini.
2. Dikarenakan ingin meningkatkan performa/kecepatan dalam pentransferan data yang
tinggi, maka solusinya menggunakan JSON dan API ini.
3. API ini bisa dihubungkan dengan bahasa pemrograman apapun tanpa memberikan
pembukaan port database dari MySQLnya
4. Untuk pengguna Android Studio dengan gampang mengembangkan sistem yang
mereka rancang.
Komponen yang digunakan untuk menghubungkan antara JSON dan Delphi adalah
1. Indy. Bisa juga menggunakan Synapse akan tetapi dalam projek penulis buat hanya
menggunakan Indy
2. Library uLkJSON.pas. Library uLKJSON ini bisa didownload DISINI . Sebenarnya
ada 1 Library lagi yaitu menggunakan IS-WEBSTART akan tetapi dalam projek
penulis hanya menggunakan uLkJSON.
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
3. Untuk Sttingan Formnya disesuaikan seperti gambar dan nama formnya Form1
4. Siapkan fungsi URL encode agar tidak terjadi error dalam penginputtan,pengubahan
data. Pada bahasan kali ini penulis menggunakan fungsi dengan nama HTTPEncode
walau ada 2 Fungsi yang penulis buat dalam projek ini
Fungsi HTTPEncode
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Fungsi MyEncodeUrl
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
6. Setelah databasenya dibuat, maka selanjutnya penulis mengajak kepada para pembaca
untuk membuat APInya melalui scrip PHP yang dibawah ini
File : koneksi.php
<?php
$user = "tesjason";
$pass = "tesjason";
$database = "tes_jason";
$host = "localhost";
$connect_db = mysql_connect($host, $user, $pass) or die("Koneksi Gagal");
mysql_select_db($database, $connect_db) or die("Database Tidak Ada");
?>
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
File : tampilkan.php
<?php
include('koneksi.php');
$respon = array();
array_push($respon["data"], $item);
}
$respon["sukses"]=1;
} else {
$respon["sukses"]=0;
$respon["pesan"]="Data tidak ditemukan";
}
echo json_encode($respon);
?>
File : slect.php
<?php
include('koneksi.php');
$respon = array();
$id = $_GET['id'];
array_push($respon["data"], $item);
}
$respon["sukses"]=1;
}
else {
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
$respon["sukses"]=0;
$respon["pesan"]="Data tidak ditemukan";
}
echo json_encode($respon);
?>
File : insert.php
<?php
include('koneksi.php');
$id = $_GET['id'];
$nama = $_GET['nama'];
$alamat = $_GET['alamat'];
$jk = $_GET['jk'];
$respon = array();
$hasil = mysql_query("INSERT INTO datajason (id,nama,alamat, jk) VALUES
('$id','$nama', '$alamat','$jk')");
if ($hasil){
$respon["sukses"]=1;
$respon["pesan"]="Data Berhasil Disimpan!";
}
else {
$respon["sukses"]=0;
$respon["pesan"]="Penyimpanan Gagal!";
}
echo json_encode($respon);
?>
File : ubah.php
<?php
include('koneksi.php');
$id = $_GET['id'];
$nama = $_GET['nama'];
$alamat = $_GET['alamat'];
$jk = $_GET['jk'];
$respon = array();
$hasil = mysql_query("UPDATE datajason SET nama='$nama',alamat='$alamat',
jk='$jk' WHERE id='$id'");
if ($hasil){
$respon["sukses"]=1;
$respon["pesan"]="Pengubahan Data Berhasil";
}
else {
$respon["sukses"]=0;
$respon["pesan"]="Pengubahan Data Gagal";
}
echo json_encode($respon);
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
?>
File : hapus.php
<?php
include('koneksi.php');
$id = $_GET['id'];
$respon = array();
$hasil = mysql_query("DELETE FROM datajason WHERE id='$id'");
if ($hasil){
$respon["sukses"]=1;
$respon["pesan"]="Delete Berhasil";
}
else {
$respon["sukses"]=0;
$respon["pesan"]="Delete Gagal";
}
echo json_encode($respon);
?>
Seluruh File PHP yang dibuat ini dibuat dan diletakkan pada folder Publik Web ataupun
htdoc/folder public Localhostnya. Dengan contoh pengalamatan dari projek yang penulis buat
seperti ini : C:\xampp\htdocs\tesjson . Disini penulis menggunakan XAMPP sebagai tool
engine dan databasenya.
7. Setelah membuat file phpnya, bisa diteskan pada bagian URL dimasing-masing
browsernya seperti ini.
URL Menampilkan seluruh data dari dalam database jika datanya ada maka akan
tampil seperti dibawah ini. URLnya seperti ini http://localhost:69/tesjson/tampilkan.php
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Setelah simbol tanda tanya “ ? “ pada link diatas itu merupakan query yang harus dilakukan
untuk mengentrikan value yang diminta oleh coding phpnya karena menggunakan method GET
selain GET ada juga method yang sering digunakan yaitu method POST akan tetapi ddalam
projeknya penulis menggunakan method GET.
id, nama, alamat, jk adalah variabel untuk menampung value yang dientrikan sementara data
setelah sama dengan itu isi dari valuenya.
Untuk URL Ubah formatnya hampir sama dengan URL ubah dengan fromat URL :
http://localhost:69/tesjson/ubah.php?id=A006&nama=Gusrio%20Tendra&alamat=Dihatim
u&jk=Laki-Laki
Pesan yang ditampilkan saat Link diatas dijalankan :
Untuk URL Cari data formatnya hampir sama dengan hapus, seperti ini :
http://localhost:69/tesjson/hapus.php?id=A006
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Jika diperhatikan diatas Link yang penulis buat menggunakan Localhost dikarenakan
laptop penulis, penulis jadikan sebagai web server, disini penulis ajak kepada pembaca
menggunakan milik sendiri saja dalam artian jangan langsung menyewa sebuah server atau
membuat sebuah web hosting gratisan.
Pada link diatas terdapat angka 69 dimana laptop penulis port webnya menggunakan angka
69. Mengapa demikian? Itu dikarenakan laptop penulis ada yang memakai port defaultnya web
yaitu 80. Jadi jika pembaca tidak ada kendala dalam port 80 maka sanagat disarankan
menggunakan port defaultnya saja dan otomatis link akan terubah menjadi seperti ini
Contoh : http://localhost/tesjson/hapus.php?id=A006
8. Jika sudah selesai membuat file-file APInya maka penulis mengajak kepada para
pembaca untuk kembalilah ke coding delphinya. Disini penulis memfokuskan ke
coding prosedur yang akan digunakan pada projeknya nanti
Pendeklarasian Prosedur pada delphi, dimana penulis menggunakan prosedur privat
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Pada coding diatas berguna untuk membuat tabel mirip seperti tabel yang ada didalam
databse akan tetapi pembuatannya menual coding karena menggunakan komponen String Grid.
Kondisi Awal dan Proses ini adalah hendel inputan kosong maupan hendel editan
kosong yang difokuskan disini adalah EdID (Inputan id) dan cmbJK (Inputan Jenis Kelamin)
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Prosedur Bersih
Prosedur Bersih ini digunakan untuk membersihkan komponen yang di gunakan saja
dimulai dari EdNama sampai cmbJK.
Selain prosedur diatas ada beberapa coding agar projek dibuat berjalan lancar. Codingnya
sebagai berikut :
Coding Button On/OFF atau Refresh Data :
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
5. Cara Menampilkan Data dari MySQL Menggunakan JSON, MySQL, dan Delphi
Pada projek yang penulis buat kali ini, cara menampilkan Data dari MySQL
menggunakan JSON tertulis pada prosedur Tampil
Berikut ini Coding Prosedur Tampil:
procedure TForm1.tampil;
var
i : Integer;
begin
//Hendel Error jika Server Nati
try
get_url := IdHTTP1.Get('http://localhost:69/tesjson/tampilkan.php');
except
application.MessageBox('Servernya Mati.'+#13+
'Silahkan Hubungi Admin!!!','Informasi Koneksi...',MB_ICONERROR);
exit;
end;
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
exit;
end;
if sts <> 1 then begin
application.MessageBox('Datanya Kosong.'+#13+
'Silahkan Menunggu Datanya Diinput Oleh Admin!!!','Informasi Data
Kosong...',MB_ICONEXCLAMATION);
exit;
end;
//Baca data json dengan label data yang terdapat pada coding PHPnya
js:= TlkJSONObject(js.Field['data']);
//Sesuaikan julmlah baris Grid dengan banyaknya data dari databasenya
Grid.RowCount := js.Count + 1;
js.Free;
end;
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
http://localhost:69/tesjson/insert.php?id=A006&nama=Gusrio%20Tendra&alamat=Dihati
mu&jk=Laki-Laki
}
get_url :=
IdHTTP1.Get('http://localhost:69/tesjson/insert.php?id='+HTTPEncode(EdId.Text)+'&nam
a='+HTTPEncode(EdNama.Text)+'&alamat='+HTTPEncode(MmAlamat.Text)+'&jk='+H
TTPEncode(cmbJK.Text)+'');
except
application.MessageBox('Servernya Mati.'+#13+
'Silahkan Hubungi Admin!!!','Informasi Koneksi...',MB_ICONERROR);
exit;
end;
end;
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
http://localhost:69/tesjson/ubah.php?id=A006&nama=Gusrio%20Tendra&alamat=Dihatim
u&jk=Laki-Laki
}
get_url :=
IdHTTP1.Get('http://localhost:69/tesjson/ubah.php?id='+HTTPEncode(EdId.Text)+'&nam
a='+HTTPEncode(EdNama.Text)+'&alamat='+HTTPEncode(MmAlamat.Text)+'&jk='+H
TTPEncode(cmbJK.Text)+'');
except
application.MessageBox('Servernya Mati.'+#13+
'Silahkan Hubungi Admin!!!','Informasi Koneksi...',MB_ICONERROR);
exit;
end;
except
application.MessageBox('Servernya Mati.'+#13+
'Silahkan Hubungi Admin!!!','Informasi Koneksi...',MB_ICONERROR);
exit;
end;
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
Berikut ini Coding Edit ID Pada Event Change Agar Tidak Terjadi Redudansi Data :
procedure TForm1.EdIdChange(Sender: TObject);
var
i : Integer;
begin
if Length(EdId.Text) <> 0 then begin
//Hendel Error jika Server Nati
try
get_url := IdHTTP1.Get('http://localhost:69/tesjson/slect.php?id='+EdId.Text);
except
application.MessageBox('Servernya Mati.'+#13+
'Silahkan Hubungi Admin!!!','Informasi Koneksi...',MB_ICONERROR);
exit;
end;
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
js.Free;
end
else begin
kondisi_awal;
Bersih;
tampil;
end;
end;
end;
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/
Delphi JSON Web Service/API
6. Data Penulis
1. Nama : Jean Riko Kurniawan Putra, M.Kom
2. Blog : http://delphianimelover.blogspot.co.id/
3. Facebook : http://www.facebook.com/Jean.Riko.K.P
Fanpage : https://www.facebook.com/jean.software/
4. BBM : 54B5758E
5. WA/SMS/Line : 087790319305
6. Telegram : @Yamiriko
Jean Riko Kurniawan Putra, M.Kom Delphi Anime Lover | Riko Software Delphi Anime Lover
https://www.facebook.com/jean.software/