import requests
import json
def load_resources_from_url_params(url_params):
"""
Loads resources from URL parameters using requests and handles JSON responses.
"""
try:
# Construct the URL with parameters
url = url_params['url']
params = url_params.get('params', {}) # Get parameters, default to empty dict if missing
# Make the request
response = requests.get(url, params=params)
response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
# Check Content-Type and parse accordingly
content_type = response.headers.get('Content-Type', '').lower()
if 'application/json' in content_type:
resources = response.json() # Parse JSON response
elif 'text/csv' in content_type:
import csv
from io import StringIO
csv_data = StringIO(response.text)
reader = csv.reader(csv_data)
resources = list(reader) # Convert to list of lists
else:
resources = response.text # Default to plain text
return resources
except requests.exceptions.RequestException as e:
print(f"Error during request: {e}")
return None
except json.JSONDecodeError as e:
print(f"Error decoding JSON: {e}")
return None
except Exception as e:
print(f"An unexpected error occurred: {e}")
return None
if __name__ == '__main__':
# Example Usage:
url_params = {
'url': 'https://jsonplaceholder.typicode.com/todos',
'params': {'userId': 1}
}
resources = load_resources_from_url_params(url_params)
if resources:
print("Resources loaded successfully:")
#print(json.dumps(resources, indent=2)) # Print nicely formatted JSON
for item in resources[:5]: # Print first 5 items if JSON
print(item)
else:
print("Failed to load resources.")
Add your comment