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
- requests.get(): Fetch data from API
- requests.post(): Send data to API
- .json(): Parse JSON response
- status_code: HTTP status (200, 404, 500, etc.)
- headers: Add authentication, user-agent, etc.
- Session: Reuse connection for multiple requests
- timeout: Prevent hanging requests