Hari 28: HTTP Requests & Konsumsi API
60 min
Last updated 26 Mar 2026
Library requests
Library requests adalah cara termudah untuk melakukan HTTP request di Python.
pip install requests
import requests
# GET request
response = requests.get("https://api.github.com")
print(response.status_code) # 200
print(response.headers["content-type"])
print(response.json()) # parse JSON otomatis
GET dengan Parameter
import requests
# Tanpa requests — URL manual
# url = "https://api.example.com/users?page=1&limit=10&sort=name"
# Dengan requests — lebih bersih
params = {"page": 1, "limit": 10, "sort": "name"}
r = requests.get("https://api.example.com/users", params=params)
print(r.url) # URL dengan parameter otomatis terbentuk
# Contoh nyata: JSONPlaceholder (API dummy gratis)
r = requests.get("https://jsonplaceholder.typicode.com/users")
if r.status_code == 200:
users = r.json()
for u in users[:3]:
print(f"{u['name']} — {u['email']}")
POST, PUT, DELETE
import requests, json
# POST — kirim data baru
payload = {"title": "Belajar Python", "body": "Hari ke-28", "userId": 1}
r = requests.post(
"https://jsonplaceholder.typicode.com/posts",
json=payload # otomatis set Content-Type: application/json
)
print(r.status_code) # 201 Created
print(r.json())
# Dengan headers (misal: autentikasi)
headers = {"Authorization": "Bearer TOKEN_ANDA"}
r = requests.get("https://api.example.com/profile", headers=headers)
# PUT — update data
r = requests.put("https://jsonplaceholder.typicode.com/posts/1", json=payload)
# DELETE
r = requests.delete("https://jsonplaceholder.typicode.com/posts/1")
print(r.status_code) # 200
Error Handling & Timeout
import requests
from requests.exceptions import ConnectionError, Timeout, HTTPError
def ambil_data(url, timeout=5):
try:
r = requests.get(url, timeout=timeout)
r.raise_for_status() # raise HTTPError jika status 4xx/5xx
return r.json()
except ConnectionError:
print("Tidak bisa terhubung ke server")
except Timeout:
print(f"Request timeout setelah {timeout}s")
except HTTPError as e:
print(f"HTTP Error: {e.response.status_code}")
except Exception as e:
print(f"Error: {e}")
return None
Session & Retry
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# Session — reuse koneksi, hemat resource
session = requests.Session()
session.headers.update({"User-Agent": "MyApp/1.0"})
# Auto-retry jika gagal
retry = Retry(total=3, backoff_factor=1)
adapter = HTTPAdapter(max_retries=retry)
session.mount("https://", adapter)
r = session.get("https://api.example.com/data")
session.close()Assignment
Buat fungsi untuk mengambil data dari JSONPlaceholder API: (1) ambil semua posts dari user tertentu, (2) ambil detail user, (3) tampilkan ringkasan dalam format yang rapi.
Expected output:
=============================================
PROFIL USER #1
=============================================
Nama : Leanne Graham
Email : Sincere@april.biz
Kota : Gwenborough
Website : hildegard.org
Total post: 10
3 Post Terbaru:
- sunt aut facere repellat provident occaecat...
...
PY
main.py
Solution
Output