import json
import requests
def prepare_api_payload(url, method='GET', headers=None, data=None, params=None):
"""
Prepares API payload for exploratory work.
Args:
url (str): The API endpoint URL.
method (str): HTTP method (GET, POST, PUT, DELETE, etc.). Defaults to GET.
headers (dict): HTTP headers. Defaults to None.
data (dict): JSON data for POST/PUT requests. Defaults to None.
params (dict): Query parameters for GET requests. Defaults to None.
Returns:
tuple: A tuple containing the response status code and the response content (as JSON).
Returns (None, None) if an error occurs.
"""
try:
if method.upper() == 'GET':
response = requests.get(url, headers=headers, params=params)
elif method.upper() == 'POST':
response = requests.post(url, headers=headers, json=data)
elif method.upper() == 'PUT':
response = requests.put(url, headers=headers, json=data)
elif method.upper() == 'DELETE':
response = requests.delete(url, headers=headers)
else:
print(f"Unsupported HTTP method: {method}")
return None, None
response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
return response.status_code, response.json()
except requests.exceptions.RequestException as e:
print(f"Request error: {e}")
return None, None
except json.JSONDecodeError as e:
print(f"JSON decode error: {e}")
return None, None
except Exception as e:
print(f"An unexpected error occurred: {e}")
return None, None
if __name__ == '__main__':
# Example usage
api_url = "https://jsonplaceholder.typicode.com/posts" #example API
#Example GET request
status_code, response_data = prepare_api_payload(api_url, method='GET')
if status_code:
print("GET Request Successful")
print("Status Code:", status_code)
print("Response Data:", response_data)
#Example POST request
post_data = {
"title": "foo",
"body": "bar",
"userId": 1
}
status_code, response_data = prepare_api_payload(api_url, method='POST', data=post_data)
if status_code:
print("\nPOST Request Successful")
print("Status Code:", status_code)
print("Response Data:", response_data)
Add your comment