GET Request
Retrieve data from server:
import requests
# Simple GET
response = requests.get('https://api.example.com/data')
# With query parameters
params = {'key': 'value', 'page': 1}
response = requests.get('https://api.example.com/search', params=params)
# URL becomes: https://api.example.com/search?key=value&page=1
POST Request
Send data to server:
# POST with form data
data = {'name': 'Alice', 'email': '[email protected]'}
response = requests.post('https://api.example.com/users', data=data)
# POST with JSON
json_data = {'name': 'Alice', 'age': 25}
response = requests.post('https://api.example.com/users', json=json_data)
Other HTTP Methods
Use other HTTP methods:
# PUT - Update resource
response = requests.put('https://api.example.com/users/1', json=data)
# DELETE - Delete resource
response = requests.delete('https://api.example.com/users/1')
# PATCH - Partial update
response = requests.patch('https://api.example.com/users/1', json=data)
Response Handling
Handle different response types:
response = requests.get('https://api.example.com/data')
# Check status
if response.status_code == 200:
data = response.json()
elif response.status_code == 404:
print("Not found")
else:
response.raise_for_status()
# Access response
print(response.text) # Text content
print(response.json()) # Parsed JSON
print(response.content) # Binary content
Error Handling
Handle errors gracefully:
try:
response = requests.get('https://api.example.com/data', timeout=5)
response.raise_for_status()
data = response.json()
except requests.exceptions.Timeout:
print("Request timed out")
except requests.exceptions.HTTPError as e:
print(f"HTTP error: {e}")
except requests.exceptions.RequestException as e:
print(f"Request error: {e}")
Best Practices
- Always use timeouts: Prevent hanging requests
- Check status codes: Handle different responses
- Use sessions: For multiple requests
- Handle exceptions: Network requests can fail
Next Steps
Learn about headers and authentication for secure requests.