Cara Akses API dan Parsing JSON Dengan Delphi | REST Client

Pada topik kali ini, saya akan menjelaskan bagaimana mengambil data dari API dengan menggunakan delphi, yaitu dengan komponen REST Client. Langsung saja perhatikan langkah-langkah berikut:
Misalkan, kita akan mengakses URL http://app.aswamedia.my.id/api/pas_by_nik.php?id={{nik}}
Buatlah desain form seperti berikut
Tambahkan komponen TRESTClient, TRESTRequest, dan TRESTResponse, perhatikan gambar berikut

Secara mudah, akan menjadi seperti gambar di bawah ini

Pada TRESTClient, isikan BaseURL dengan URL utama
Pada struktur TRESTRequest, klik kanan, add item
Klik parameter yang telah dibuat, dan isikan name dengan id (atau bisa disesuaikan dengan parameter URL yang akan diakses)
Masih pada TRESTRequest, isikan Resource dengan pas_by_nik.php (sesuaikan dengan URLnya), dan pastikan Response terisi RESTResponse1

Setting komponen selesai, sekarang klik 2 kali pada tombol cari
Tambahkan di bawah implementation code berikut
uses
  System.IOUtils, System.JSON, System.Generics.Collections;

Kemudian, isikan code berikut di procedure cari
var
  data:TJSonValue;
begin
  //setting value parameter yang akan dikirim ke server
  RESTRequest1.Params[0].Value:=Edit1.Text;
  //eksekusi
  RESTRequest1.Execute;
  //menampilkan JSON respon API
  Memo1.Text:=RESTResponse1.Content;

  //parsing json yang ada di memo 1, atau bisa langsung dari content respon
  data:=TJSONObject.ParseJSONValue(Memo1.Text);

  //mengambil nilai untuk diletakkan ke dalam input dan memo
  edit2.Text:=data.GetValue<string>('nm_lkp');
  memo2.Text:=data.GetValue<string>('almt');
  edit3.Text:=data.GetValue<string>('umur');

end;

Hasilnya seperti berikut
Jika respon dari API lebih dari 1 data, maka kita perlu mengubah json tersebut menjadi array dengan code TJSONArray, kemudian data tersebut ditampilkan di . Berikut code lengkapnya:
var
  data: TJSONArray;
  i: Integer;
  row : TJSONObject;
  nama,jml_pg : string;
begin
  //setting value parameter yang akan dikirim ke server
  StringGrid1.Cells[0,0]:='Nama';
  StringGrid1.Cells[1,0]:='Jumlah PG';
  RESTRequest1.Params[0].Value:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.Date);
  RESTRequest1.Params[1].Value:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.Date);
  //eksekusi
  RESTRequest1.Execute;
  //menampilkan JSON respon API
  Memo1.Text:=RESTResponse1.Content;

  //parsing json yang ada di memo 1, atau bisa langsung dari content respon
  data:=TJSONObject.ParseJSONValue(RESTResponse1.Content) as TJSONArray;

  for i := 0 to data.Size - 1 do
    begin
       row := data.Get(i) as TJSONObject;
       nama := row.Get('nm').JsonValue.Value;
       jml_pg :=  row.Get('jml_pg').JsonValue.Value;
       StringGrid1.Cells[0,i+1]:=nama;
       StringGrid1.Cells[1,i+1]:=jml_pg;
    end;
  //mengambil nilai untuk diletakkan ke dalam input dan memo

end;

Hasilnya sebagai berikut.


Semoga bermanfaat.






Posting Komentar

0 Komentar