1. import json
  2. import requests
  3. def prepare_api_payload(url, method='GET', headers=None, data=None, params=None):
  4. """
  5. Prepares API payload for exploratory work.
  6. Args:
  7. url (str): The API endpoint URL.
  8. method (str): HTTP method (GET, POST, PUT, DELETE, etc.). Defaults to GET.
  9. headers (dict): HTTP headers. Defaults to None.
  10. data (dict): JSON data for POST/PUT requests. Defaults to None.
  11. params (dict): Query parameters for GET requests. Defaults to None.
  12. Returns:
  13. tuple: A tuple containing the response status code and the response content (as JSON).
  14. Returns (None, None) if an error occurs.
  15. """
  16. try:
  17. if method.upper() == 'GET':
  18. response = requests.get(url, headers=headers, params=params)
  19. elif method.upper() == 'POST':
  20. response = requests.post(url, headers=headers, json=data)
  21. elif method.upper() == 'PUT':
  22. response = requests.put(url, headers=headers, json=data)
  23. elif method.upper() == 'DELETE':
  24. response = requests.delete(url, headers=headers)
  25. else:
  26. print(f"Unsupported HTTP method: {method}")
  27. return None, None
  28. response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
  29. return response.status_code, response.json()
  30. except requests.exceptions.RequestException as e:
  31. print(f"Request error: {e}")
  32. return None, None
  33. except json.JSONDecodeError as e:
  34. print(f"JSON decode error: {e}")
  35. return None, None
  36. except Exception as e:
  37. print(f"An unexpected error occurred: {e}")
  38. return None, None
  39. if __name__ == '__main__':
  40. # Example usage
  41. api_url = "https://jsonplaceholder.typicode.com/posts" #example API
  42. #Example GET request
  43. status_code, response_data = prepare_api_payload(api_url, method='GET')
  44. if status_code:
  45. print("GET Request Successful")
  46. print("Status Code:", status_code)
  47. print("Response Data:", response_data)
  48. #Example POST request
  49. post_data = {
  50. "title": "foo",
  51. "body": "bar",
  52. "userId": 1
  53. }
  54. status_code, response_data = prepare_api_payload(api_url, method='POST', data=post_data)
  55. if status_code:
  56. print("\nPOST Request Successful")
  57. print("Status Code:", status_code)
  58. print("Response Data:", response_data)

Add your comment