🌐 Requests

HTTP Library for APIs

Requests Library

Requests is the most popular HTTP library in Python. It simplifies making HTTP requests to APIs and websites with an elegant interface.

💻 GET Requests

# pip install requests
import requests

# Basic GET request
response = requests.get('https://api.github.com')
print(response.status_code)  # 200
print(response.text)          # Response body as string
print(response.json())        # Parse JSON response

# GET with parameters
params = {'q': 'python', 'sort': 'stars'}
response = requests.get('https://api.github.com/search/repositories', params=params)
data = response.json()

# GET with headers
headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://api.example.com/data', headers=headers)

# Check response
if response.status_code == 200:
    print("Success!")
else:
    print(f"Error: {response.status_code}")

📤 POST, PUT, DELETE

# POST request (create)
data = {'name': 'Alice', 'age': 30}
response = requests.post('https://api.example.com/users', json=data)

# POST with form data
form_data = {'username': 'alice', 'password': 'secret'}
response = requests.post('https://api.example.com/login', data=form_data)

# PUT request (update)
data = {'age': 31}
response = requests.put('https://api.example.com/users/123', json=data)

# DELETE request
response = requests.delete('https://api.example.com/users/123')

# File upload
files = {'file': open('document.pdf', 'rb')}
response = requests.post('https://api.example.com/upload', files=files)

🔧 Advanced Features

# Session (reuse connection)
session = requests.Session()
session.headers.update({'User-Agent': 'MyApp/1.0'})
response1 = session.get('https://api.example.com/data')
response2 = session.get('https://api.example.com/more')

# Timeout
try:
    response = requests.get('https://api.example.com', timeout=5)
except requests.Timeout:
    print("Request timed out")

# Error handling
try:
    response = requests.get('https://api.example.com')
    response.raise_for_status()  # Raise exception for 4xx/5xx
except requests.HTTPError as e:
    print(f"HTTP error: {e}")
except requests.RequestException as e:
    print(f"Error: {e}")

# Download file
response = requests.get('https://example.com/image.jpg')
with open('image.jpg', 'wb') as f:
    f.write(response.content)

🎯 Key Takeaways