Saya mendapat pertanyaan dari seseorang bagaimana cara mengambil data API menggunakan Python, pertanyaan menarik bukan. API saat ini sangat membantu untuk mempercepat proses transfer/ambil data tanpa melibatkan Interface, Jadi tidak perlu seluruh Interface kita ambil cukup data yang direspon oleh server. Banyak dari website – website saat ini menyediakan API untuk memudahkan developer untuk terkoneksi dengan aplikasi yang dibuat developer tersebut, Contoh Google, Facebook, twitter dll mereka membuka API untuk para pengembang software agar aplikasi yang dibuat dapat berbicara dengan penyedia API, Justru ini akan membuat developer lebih kreatif dalam membuat software.
Kita tidak focus membuat API pada artikel kali ini tapi bagaimana mengambil data melalui website, data apa yang diambil? terserah bisa XML atau JSON. Di python juga ada fungsi yang hampir sama seperti CURL pada PHP hanya beda nama fungsi saja, penerapannya juga sama seperti CURL yaitu untuk mengambil data melalui URL. Apa yang butuhkan untuk pengaplikasiannya?
1. File Python yang digunakan untuk menarik data.
2. File PHP yang berguna untuk Respon data yang direquest dari python.
berikut sedikit contoh file python untuk Request data ke server
from tkinter import * // import component tkinter
import requests, json, tkinter.messagebox as msgBox // import Request, json dan messageboxclass App(Frame): // buat class App
def __init__(self, parent):
Frame.__init__(self, parent)
self.txtName = StringVar() // deklarasi variabel nama
self.txtAddr = StringVar() // deklarasi variabel alamat
self.btnProcess = Button(parent, text=’Process’, width=10, padx=2, command=self.getData) // membuat tombol Proses
self.btnProcess.pack(side=”top”) // letakkan tombol pada window frame
self.lblName = Label(parent, text=”Nama”, width=10, padx=2) // buat nama label
self.inpName = Entry(parent, textvariable=self.txtName) // buat text entry Nama
self.lblName.pack(side=”left”,anchor=’e’) // letakkan label pada window frame
self.inpName.pack(side=”left”,anchor=’w’, fill=’x’) // letakkan Entry text pada window
self.lblAddr = Label(parent, text=”Alamat”, width=10, padx=2) // buat label alamat
self.inpAddr = Entry(parent, textvariable=self.txtAddr) // buat entry text alamat
self.lblAddr.pack(side=”left”,anchor=’e’) // letakkan label pada window frame
self.inpAddr.pack(side=”left”, anchor=’w’, fill=’x’) // letakkan Entry text pada window
def getData(self):
try:
Result = requests.get(“http://localhost/getdata.php”) // fungsi untuk mengambil data ke website
Result.status_code // status respon
Result.headers[‘content-type’] // type content data
Result.encoding
Result = Result.text // hasil pengambilan data
Data = json.loads(Result) // karena data yg diambil json, kita decode supaya jadi dictionary/array
self.txtName.set(Data[‘nama’]) // tanpilkan pada Entr text nama
self.txtAddr.set(Data[‘alamat’]) // tanpilkan pada Entr text alamat
except Exception as e:
msgBox.showwarning(“Peringatan”, “Data tidak dapat diambil, kemungkinan koneksi ke server terganggu.”) // pesan kesalahan bila gagal terkoneksi ke server
raise e
root = Tk()
App(root)
root.mainloop()
File respon yang di Request sebagai berikut
<?php
$data = array(“nama” => “Jonny”, “alamat” => “Dukuh kupang XE 14”);echo json_encode($data);
?>
kok sedikit sekali Respon filenya? ini hanya contoh untuk pengembangan bisa disesuaikan menurut permasalahan masing – masing.
Bagaimana simple sekali bukan!
bukannya bisa langsung tembak ke databasenya aj, jadi tidak boros bandwith?
dalam kasus ini, anggap data yang mau diambil ada di tempat dan server lain, akan lebih boros bandwith kalau harus terkoneksi database antar tempat (misakan Cabang kantor).
Semoga bermanfaat