Python: Fetch REST API dan input ke CSV

Yakk...udah lama banget saya ga update di blog kesayangan ini. Pada kesempatan kali ini saya mencoba untuk membahas gimana sih cara fetch REST API terus kemudian di input ke file CSV. Pada beberapa case, teknik ini sangat berguna misal untuk seorang Data Engineer yang terkadang harus mengautomasikan data yang mereka dapat dan menyimpannya dalam bentuk yang siap diimport ke DB server, atau case-case yang lain.

Apa itu REST API?

Rest API

API merupakan singkatan dari Application Interface Programming, yang secara singkatnya API bisa digunakan oleh seorang Developer untuk mengintegrasikan aplikasi yang berada di platform ataupun perangkat yang berbeda agar bisa saling terkoneksi antara satu dengan lainnya. Tujuan utama kenapa API digunakan dalam pembuatan sebuah software adalah untuk saling berbagi data antara aplikasi dari platform yang sama maupun yang berbeda.

Sedangkan REST merupakan kependekan dari Representational State Transfer. REST merupakan sebuah web service yang berjalan di client dan server yang bersifat stateless. Yang mempunyai arti bahwa setiap request yang dikirim oleh aplikasi maka harus menyertakan semua parameter dan datanya dengan lengkap. Secara singkat cara kerjanya adalah client akan menjalankan request ke server REST, ketika request terkirim ke server selanjutnya server akan memberikan response. (Sumber: https://nemolab.id/mengenal-rest-api/.)

Praktikum

Untuk keperluan content ini saya menggunakan sample API users dari JSON Placeholder. Langsung saja pertama-tama kita import dulu library yang dibutuhkan (apabila belum diinstall silahkan diinstall terlebih dahulu menggunakan pip).

import json
import requests
import csv

Kemudian untuk mendapatkan data JSON dari API tersebut kita harus melakukan GET request terlebih dahulu.

response = requests.get("https://jsonplaceholder.typicode.com/users")

Lalu data JSON yang kita dapatkan, kita convert ke Python object menggunakan function loads dari library json.

users = json.loads(response.text)

Lanjut, kita mulai sesi penginputan ke CSV, pertama kita open dulu file csv dengan statement "with" dan dalam mode write (apabila file yang di-open belum ada, maka akan otomatis terbuat). 'w' Berarti Write, dan 'user.csv' adalah nama filenya.

with open('users.csv', 'w') as f:
    writer = csv.writer(f)

Masih di dalam statement "with" kita tuliskan dulu header CSV nya menggunakan writerow() method, kali ini kita hanya mengambil data dari beberapa key saja, yaitu Name, City, GPS, dan Company Name.

writer.writerow(("Name", "City", "GPS", "Company"))

Sesi terakhir adalah melakukan looping untuk setiap data yang di dapat dan menginputnya ke CSV tadi. Sesi loop ini masih tetap dilakukan di dalam statement "with" ya.

for user in users:
        name = user['name']
        city = user['address']['city']
        lat = user['address']['geo']['lat']
        lng = user['address']['geo']['lng']
        geo = f'({lat},{lng})'
        company_name = user['company']['name']
 
        csv_data = (name, city, geo, company_name)
        writer.writerow(csv_data)

Sehingga ketika kita buka file users.csv hasilnya akan terlihat seperti ini:

result

Yak...cukup sampai disini dulu tulisan saya. Terimakasih!

Full Code

import json
import requests
import csv
 
# GET Request ke endpoint API
response = requests.get("https://jsonplaceholder.typicode.com/users")
# Load JSON encoded string ke Python object
users = json.loads(response.text)
 
# Input ke CSV
with open('users.csv', 'w') as f:
    writer = csv.writer(f)
 
    # Header CSV nya
    writer.writerow(("Name", "City", "GPS", "Company"))
 
    # Looping data yang di dapat
    for user in users:
        name = user['name']
        city = user['address']['city']
        lat = user['address']['geo']['lat']
        lng = user['address']['geo']['lng']
        geo = f'({lat},{lng})'
        company_name = user['company']['name']
 
        # Input data tsb ke CSV mengikuti format yang sudah kita tentukan
        csv_data = (name, city, geo, company_name)
        writer.writerow(csv_data)