Advanced Examples
Error Handling
Python with Error Handling
import requests
from requests.exceptions import RequestException, Timeout
def api_request(method, endpoint, data=None, timeout=5):
"""Make API request with comprehensive error handling."""
url = f"{BASE_URL}{endpoint}"
try:
if method == "GET":
response = requests.get(url, headers=headers, timeout=timeout)
elif method == "POST":
response = requests.post(url, json=data, headers=headers, timeout=timeout)
response.raise_for_status()
return response.json()
except Timeout:
print("Error: Request timed out")
return None
except requests.HTTPError as e:
print(f"HTTP Error: {e.response.status_code}")
return None
except RequestException as e:
print(f"Request Error: {e}")
return None
# Usage
result = api_request("GET", "/resources")
Pagination
Handling Large Result Sets
def list_all_resources(page_size=100):
"""Fetch all resources with pagination."""
page = 1
all_resources = []
while True:
response = requests.get(
f"{BASE_URL}/resources",
params={
"page": page,
"limit": page_size
},
headers=headers
)
data = response.json()["data"]
if not data:
break
all_resources.extend(data)
page += 1
return all_resources
# Usage
resources = list_all_resources()
print(f"Total resources: {len(resources)}")
Batch Operations
def batch_create_resources(resource_list):
"""Create multiple resources efficiently."""
created = []
failed = []
for resource in resource_list:
try:
response = requests.post(
f"{BASE_URL}/resources",
json=resource,
headers=headers
)
response.raise_for_status()
created.append(response.json()["data"])
except requests.HTTPError as e:
failed.append({
"resource": resource,
"error": str(e)
})
return {
"created": created,
"failed": failed
}
# Usage
resources_to_create = [
{"name": "Resource 1", "type": "doc"},
{"name": "Resource 2", "type": "api"}
]
result = batch_create_resources(resources_to_create)
Async Operations (JavaScript)
// Concurrent API calls
async function fetchMultipleResources(ids) {
const promises = ids.map(id =>
fetch(`${BASE_URL}/resources/${id}`, {
headers: { "Authorization": `Bearer ${API_KEY}` }
}).then(r => r.json())
);
return Promise.all(promises);
}
// Usage
const ids = ["res_123", "res_124", "res_125"];
const resources = await fetchMultipleResources(ids);