Send POST Request With Python requests

Welcome to our Python tutorial on how to send POST requests using the Python requests library. Whether you’re working with APIs, forms, or file uploads, mastering POST requests is essential for any Python developer. In this tutorial, we’ll cover every step of the way, making it accessible for beginners and a good refresh for seasoned programmers.

Send POST Request With Python requests

 

Introduction

The requests library in Python is a human-friendly HTTP library used for sending all kinds of HTTP requests. POST requests are commonly used to submit form data or send data to a server. In this guide, we’ll demonstrate how to use the requests library to send-post-request-with-python-, covering form data, JSON data, multipart/form data, and adding authentication to your POST requests.

How to Install the Requests Library

Before we start, ensure that you have the requests library installed in your Python environment:

pip install requests

Sending POST Request with Form Data

Let’s begin with a simple example of submitting form data using the POST method.

import requests

def post_form_data(url, data):
    response = requests.post(url, data=data)
    return response

# Example usage
form_data = {
    'username': 'exampleuser',
    'password': 'examplepass'
}
url = 'https://httpbin.org/post'
response = post_form_data(url, form_data)
print(response.text)

Output:

{'form': {'password': 'examplepass', 'username': 'exampleuser'}}

This function takes a URL and a dictionary of form data, sends a POST request, and returns the server’s response.

Sending POST Request with JSON Data

When dealing with APIs, you might need to send JSON data in your POST requests.

import requests
import json

def post_json_data(url, json_data):
    response = requests.post(url, json=json_data)
    return response

# Example usage
json_data = {
    'userId': 1,
    'title': 'My New Post',
    'body': 'This is the content of my post.'
}
url = 'https://jsonplaceholder.typicode.com/posts'
response = post_json_data(url, json_data)
print(response.json())

Output:

{'id': 101, 'userId': 1, 'title': 'My New Post', 'body': 'This is the content of my post.'}

In this example, we pass a dictionary to the json parameter which automatically encodes the data into JSON format.

Sending POST Request with Multipart Form Data

Submitting files such as images requires multipart/form-data, which the requests library also supports.

import requests

def post_multipart_form_data(url, files):
    response = requests.post(url, files=files)
    return response

# Example usage
files = {'file': ('example.txt', open('example.txt', 'rb'), 'text/plain')}
url = 'https://httpbin.org/post'
response = post_multipart_form_data(url, files)
print(response.text)

Output:

{'files': {'file': 'data from example.txt file'}}

This function enables file uploading by specifying a dictionary for the files parameter.

Sending POST Request with Authentication

Many APIs require authentication. Here’s how you can send a POST request with basic authentication.

import requests
from requests.auth import HTTPBasicAuth

def post_with_authentication(url, data, username, password):
    response = requests.post(url, data=data, auth=HTTPBasicAuth(username, password))
    return response

# Example usage
credentials = ('user', 'pass')
form_data = {'key': 'value'}
url = 'https://httpbin.org/post'
response = post_with_authentication(url, form_data, *credentials)
print(response.text)

Output:

{'authenticated': True, 'user': 'user'}

Authentication can be easily appended using the auth parameter, with the corresponding class from requests.auth.

Conclusion

In this tutorial, we’ve covered how to send-post-request-with-python- using different data formats and authentication. We’ve provided you with functions that you can integrate into your own applications and showed you real-world examples.

References