Python Requests: How to Make HTTP Requests in Python

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

What is the Requests Library and Why Use It

The Requests library is one of the most popular and easy-to-use Python libraries for making HTTP requests. It provides a clean, intuitive interface for sending GET, POST, PUT, DELETE, and other types of HTTP requests with minimal code.

Key Benefits of the Requests Library

  • Simple syntax and an intuitive API
  • Built-in session support and cookie management
  • Automatic JSON and form data handling
  • Support for various authentication methods
  • Ability to work with proxy servers
  • Comprehensive documentation in English
  • Active developer community support

Installing the Requests Library

Install the Requests library using the pip package manager. The installation process depends on the Python version you're using.

Standard Installation

pip install requests

Installation for Python 3

If you have multiple Python versions installed, use pip3 to install it for Python 3:

pip3 install requests

Verifying the Installation

After installation, verify it worked by importing the library in a Python console:

import requests
print(requests.__version__)

Working with GET Requests

GET requests are used to retrieve data from a web server. This is the most common type of HTTP request in web development.

Simple GET Request

import requests

response = requests.get('https://api.github.com')
print(response.status_code)  # Response status (200 = OK)
print(response.text)         # Response body as a string

Analyzing the Server Response

When working with GET requests, it's important to properly analyze the response. The response object contains many useful attributes:

  • status_code - HTTP status code of the response
  • text - response content as a string
  • content - response content in bytes
  • headers - response headers
  • url - the final URL of the request

Working with Query Parameters

You can pass URL parameters using a dictionary, which makes the code more readable and easier to modify:

params = {
    'q': 'python programming',
    'page': 2,
    'limit': 50
}

response = requests.get('https://www.example.com/search', params=params)
print(response.url)  # Shows the constructed URL with parameters

POST Requests and Sending Data to a Server

POST requests are used to send data to a server, for example, when submitting forms or creating new records in a database.

Sending Form Data

data = {
    'username': 'admin',
    'password': '12345',
    'email': 'admin@example.com'
}

response = requests.post('https://httpbin.org/post', data=data)
print(response.text)

Sending JSON Data

When working with modern APIs, you often need to send data in JSON format. The Requests library automatically sets the correct Content-Type when using the json parameter:

import json

data = {
    'name': 'John Doe',
    'age': 30,
    'city': 'New York'
}

response = requests.post('https://httpbin.org/post', json=data)
result = response.json()  # Automatically parse the response as JSON
print(result)

Differences Between data and json Parameters

  • The data parameter sends data as a form (application/x-www-form-urlencoded)
  • The json parameter sends data as JSON (application/json)

Blogs

Book Recommendations