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 messagebox

class 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