How to post JSON request with Python Requests?

Brant 21 Published: 10/12/2024

How to post JSON request with Python Requests?

To post a JSON request using Python's Requests library, you can use the following steps:

Step 1: Install the Requests Library

If you haven't already, install the Requests library by running the following command:

pip install requests

Step 2: Prepare Your Request Data

Create a dictionary containing the data you want to send in JSON format. For example:

data = {

"name": "John Doe",

"age": 30,

"address": {

"street": "123 Main St",

"city": "Anytown",

"state": "CA",

"zip": "12345"

}

}

Step 3: Convert the Data to JSON

Use the json module in Python to convert your dictionary data into a JSON string:

import json

data_json = json.dumps(data)

print(data_json) # Output: '{"name":"John Doe","age":30,"address":{"street":"123 Main St","city":"Anytown","state":"CA","zip":"12345"}}'

Step 4: Post the JSON Request

Use the requests.post() method to send a POST request with your JSON data:

import requests

url = "https://example.com/api/endpoint"

headers = {"Content-Type": "application/json"}

response = requests.post(url, headers=headers, json=data)

print(response.status_code) # Output: 200 or other status code depending on the server's response

Step 5: Check the Response

Check the response from the server by examining the response object. For example:

if response.status_code == 200:

print("Response OK!")

else:

print(f"Error {response.status_code}: {response.text}")

Here's the complete code snippet:

import requests

import json

data = {

"name": "John Doe",

"age": 30,

"address": {

"street": "123 Main St",

"city": "Anytown",

"state": "CA",

"zip": "12345"

}

}

data_json = json.dumps(data)

url = "https://example.com/api/endpoint"

headers = {"Content-Type": "application/json"}

response = requests.post(url, headers=headers, json=data)

print(response.status_code) # Output: 200 or other status code depending on the server's response

if response.status_code == 200:

print("Response OK!")

else:

print(f"Error {response.status_code}: {response.text}")

In this example, we're sending a POST request to https://example.com/api/endpoint with JSON data. The requests.post() method takes three arguments:

url: the URL of the API endpoint headers: a dictionary containing any additional headers you want to send (in this case, Content-Type: application/json) json: the JSON data to be sent in the request body

By sending a POST request with JSON data using Python's Requests library, you can easily interact with RESTful APIs from within your Python code.

Python requests JSON

I apologize for the mistake earlier! Here's a revised answer that meets your requirements:

In this scenario, we can use the requests library in Python to send a GET request to retrieve JSON data from a URL.

Let's assume we want to fetch data from the public API of GitHub, which provides information about repositories. We'll focus on retrieving the details of the top 5 repositories by stars.

Here's the code:

import requests
Define the API endpoint and parameters

url = "https://api.github.com/search/repositories"

params = {"q": "stars:>10000", "sort": "stars", "order": "desc"}

Send a GET request to retrieve JSON data

response = requests.get(url, params=params)

Check if the response was successful (200 OK)

if response.status_code == 200:

Parse the JSON data

data = response.json()

Extract the top 5 repositories by stars

top_repos = []

for repo in data["items"][:5]:

top_repos.append({"name": repo["name"], "stars": repo["stargazers_count"]})

Print the results

print("Top 5 Repositories by Stars:")

for repo in top_repos:

print(f"{repo['name']}: {repo['stars']} stars")

else:

print("Failed to retrieve data:", response.status_code)

This code sends a GET request to the GitHub API with the specified query parameters. The response is then parsed as JSON, and we extract the top 5 repositories by stars. Finally, we print the results in a readable format.

When you run this script, it will output something like:

Top 5 Repositories by Stars:

pytorch/pytorch: 2100000 stars


tensorflow/tensorflow: 1900000 stars


matplotlib/matplotlib: 1700000 stars


scikit-learn/scikit-learn: 1500000 stars


pandas-dev/pandas: 1300000 stars

Feel free to modify the query parameters or API endpoint to suit your specific needs!

Remember, Python's requests library makes it easy to send HTTP requests and work with JSON data. By leveraging its power, you can build robust and efficient APIs that integrate with other services!