Python Requests Library: Tutorial & Panduan Praktis API

Python Requests adalah pustaka HTTP pihak ketiga yang paling populer dan elegan untuk berinteraksi dengan API web menggunakan bahasa pemrograman Python. Pustaka ini menyederhanakan proses pengiriman permintaan HTTP seperti GET, POST, PUT, dan DELETE tanpa harus menulis kode yang rumit seperti pada modul bawaan urllib.

Untuk memulai menggunakan Requests, Anda harus memasangnya terlebih dahulu melalui manajer paket pip di terminal atau command prompt Anda menggunakan perintah pip install requests. Setelah terpasang, Anda dapat langsung mengimpornya ke dalam skrip Python Anda dengan mengetikkan import requests.

Metode Dasar HTTP dengan Requests

Pustaka ini menyediakan fungsi-fungsi intuitif yang merepresentasikan metode HTTP standar. Setiap fungsi mengembalikan objek respons (Response) yang berisi data status kode, konten, header, dan informasi penting lainnya dari server yang dihubungi.

Metode HTTP Fungsi Requests Kegunaan Utama
GET requests.get(url) Mengambil data atau sumber daya dari server.
POST requests.post(url, data=...) Mengirimkan data baru ke server.
PUT requests.put(url, data=...) Memperbarui seluruh sumber daya yang ada di server.
DELETE requests.delete(url) Menghapus sumber daya dari server.

Contoh Penggunaan Script

Berikut adalah contoh implementasi nyata bagaimana melakukan permintaan GET dengan parameter query dan membaca respons dalam format JSON menggunakan blok kode di bawah ini:

import requests

url = "https://api.github.com/search/repositories"
parameters = {"q": "language:python"}

response = requests.get(url, params=parameters)

# Periksa apakah permintaan berhasil
if response.status_code == 200:
    data = response.json()
    print(f"Total repositori ditemukan: {data['total_count']}")
else:
    print(f"Gagal mengakses API. Kode status: {response.status_code}")

Mengirim Data dengan POST dan Header Kustom

Selain mengambil data, Anda seringkali perlu mengirim data ke server, misalnya untuk melakukan autentikasi atau mengirim payload JSON. Anda dapat menggunakan parameter json untuk otomatis melakukan serialisasi data Python menjadi string JSON, serta menyertakan kamus (dictionary) untuk header kustom.

import requests

url = "https://httpbin.org/post"
headers = {
    "User-Agent": "AplikasiPythonSaya/1.0",
    "Authorization": "Bearer TOKEN_ANDA_DISINI"
}
payload = {
    "nama": "Budi",
    "peran": "Developer"
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

Penanganan Error (Error Handling) dan Timeout

Dalam aplikasi produksi, jaringan tidak selalu stabil. Anda wajib menangani potensi pengecualian (exceptions) seperti timeout atau koneksi terputus menggunakan blok try-except serta memanfaatkan metode raise_for_status() untuk mendeteksi kegagalan kode status HTTP (seperti 404 atau 500).

import requests
from requests.exceptions import RequestException

try:
    response = requests.get("https://api.github.com/nonexistent", timeout=5)
    response.raise_for_status()
except requests.exceptions.HTTPError as err_http:
    print(f"HTTP Error terjadi: {err_http}")
except requests.exceptions.ConnectionError:
    print("Kesalahan Koneksi. Periksa jaringan internet Anda.")
except requests.exceptions.Timeout:
    print("Permintaan melampaui batas waktu (timeout).")
except RequestException as err:
    print(f"Terjadi kesalahan umum: {err}")

Tips Troubleshooting Lapangan

Jika Anda mengalami masalah sertifikat SSL saat mengakses API lokal atau server internal, Anda dapat menambahkan parameter verify=False pada fungsi permintaan Anda. Namun, pastikan untuk tidak menggunakan pengaturan ini pada lingkungan produksi demi keamanan data. Selalu gunakan blok penanganan timeout agar skrip aplikasi Anda tidak mengalami hanging atau macet tak terbatas saat server tujuan lambat merespons.