Http requests in python

Http requests in python

Introduction to HTTP requests in Python

HTTP (Hypertext Transfer Protocol) is the foundation of the Internet. It allows communication between web servers and clients, such as web browsers or mobile applications. Python provides several libraries to make HTTP requests, including the built-in urllib module, Requests library, and aiohttp library for asynchronous HTTP requests.

In this article, you'll focus on the Requests library, which is a simple and elegant HTTP library for Python. You'll explore its various functionalities and use cases for sending HTTP requests.

Installing and using the Requests library

To get started with the Requests library, you need to install it using pip:

pip install requests

Once installed, you can import it into your Python code and start making requests. Here's an example of how to send an HTTP GET request:

import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(response.status_code)
print(response.json())

In this example, we're sending a GET request to the JSONPlaceholder API to retrieve a list of posts. We're printing the status code of the response and the JSON content returned by the server.

Sending HTTP requests with parameters

Often, you'll need to send additional parameters with your HTTP requests. For example, you might need to send query parameters in a GET request or form data in a POST request.

The Requests library makes it easy to send these parameters using the params and data parameters, respectively. Here's an example of how to send a GET request with query parameters:

import requests

payload = {'q': 'Python'}
response = requests.get('https://www.google.com/search', params=payload)
print(response.url)

In this example, we're sending a GET request to the Google search page with the q parameter set to "Python". We're printing the URL of the request, which includes the query parameter.

Here's an example of how to send a POST request with form data:

import requests

payload = {'username': 'john', 'password': 'secret'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.json())

In this example, we're sending a POST request to the httpbin.org endpoint with the username and password form fields set to "john" and "secret", respectively. We're printing the JSON content returned by the server.

Sending HTTP requests with headers

HTTP headers are additional information sent by the client or server to provide more context about the request or response. You can send custom headers with your HTTP requests using the headers parameter.

Here's an example of how to send a GET request with a custom User-Agent header:

import requests

headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('https://www.google.com/', headers=headers)
print(response.content)

In this example, we're sending a GET request to the Google homepage with a custom User-Agent header set to "Mozilla/5.0". We're printing the content returned by the server, which includes the HTML code of the webpage.

Parsing cookies with headers

HTTP cookies are small pieces of data that are sent from a web server to a client and stored on the client side. Cookies can be used for session management, personalization, and tracking.

The Requests library makes it easy to parse cookies from the Set-Cookie header and send them back to the server with the Cookie header. Here's an example of how to send a GET request with cookies:

import requests

response = requests.get('https://httpbin.org/cookies/set', cookies={'name': 'value'})
print(response.content)

In this example, we're sending a GET request to the httpbin.org endpoint with a cookie named "name" and value "value". We're printing the cookies returned by the server, which should include the cookie we just set.

Using API tokens with headers

API tokens are authentication credentials that are used to access web APIs. API tokens are often sent as headers to authenticate the request and authorize the user.

Here's an example of how to send a GET request with an API token:

import requests

headers = {'Authorization': 'Bearer <api_token>'}
response = requests.get('https://api.example.com/data', headers=headers)
print(response.json())
#this is only an example of code it doesn't work

In this example, we're sending a GET request to the example.com API with an API token sent as a Bearer token in the Authorization header. We're printing the JSON content returned by the server.

API tokens can also be sent as query parameters or in the request body, depending on the API's authentication scheme.

Conclusion

In conclusion, the Requests library is a powerful tool for making HTTP requests in Python. It provides an easy-to-use interface for sending GET and POST requests with parameters and headers. Whether you're building a web scraper or a REST API client, the Requests library can simplify your code and streamline your workflow.

Follow and support me:

Special thanks if you subscribe to my channel :)

Did you find this article valuable?

Support Paolo Ferrari by becoming a sponsor. Any amount is appreciated!