Understanding the Python requests Library
Rany ElHousieny, PhD???
Generative AI ENGINEERING MANAGER | ex-Microsoft | AI Solutions Architect | Generative AI & NLP Expert | Proven Leader in AI-Driven Innovation | Former Microsoft Research & Azure AI | Software Engineering Manager
Python has always been a go-to language for developers due to its simplicity and versatility. When it comes to making HTTP requests, the?requests?library stands out as a popular choice. It’s easy to use, efficient, and packed with features that simplify interaction with web services. In this article, we'll explore the basics of the?requests?library, complete with simple examples to get you started.
Note: This article is part of the following course:
What is the?requests?Library?
The?requests?library is a simple yet powerful HTTP library in Python. It abstracts the complexities of making HTTP requests behind a beautiful, simple API, allowing you to send HTTP requests in a human-friendly way. Whether you want to send data, fetch data from a web API, or even upload files,?requests?has you covered.
Installing?requests
Before diving into examples, ensure you have?requests?installed. You can install it using pip:
pip install requests
Basic GET Request
The GET request is the simplest form of HTTP request and is used to fetch data from a server. Here’s an example of how to make a GET request:
import requests
import json
response = requests.get('https://api.chucknorris.io/jokes/random')
if response.status_code == 200:
print("Success!")
joke_data = response.json()
print(f"Joke: {joke_data['value']}")
else:
print("An error occurred:", response.status_code)
Success!
Joke: Charity gives to Chuck Norris.
In this example, we’re requesting data from a placeholder API. If the request is successful, it prints the JSON response.
Explanation:
This API provides a random Chuck Norris joke in a straightforward format.
The line that is reponsible of sending the request is:
response = requests.get('https://api.chucknorris.io/jokes/random')
The rest of the code is to handle the reponse and print it in a readable format
领英推荐
Making a POST Request
POST requests are used to send data to a server. Let’s see how you can send a POST request with some data:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
data = {
'title': 'foo',
'body': 'bar',
'userId': 1
}
response = requests.post(url, json=data)
if response.status_code == 201: # 201 Created
print("Resource created successfully!")
print(response.json())
else:
print("Failed to create resource:", response.status_code)
Resource created successfully!
{'title': 'foo', 'body': 'bar', 'userId': 1, 'id': 101}
Here, we send a JSON payload to create a new resource on the server.
Handling Headers
Sometimes, you'll need to include headers in your requests, such as sending an API key or setting the content type. Here’s how you can do that:
import requests
headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json'
}
response = requests.get('https://api.example.com/data', headers=headers)
print(response.status_code)
print(response.json())
In this example, we're sending an authorization header with the request.
Sending URL Parameters
You can send query parameters in a GET request by passing a dictionary to the?params?parameter:
import requests
params = {'q': 'python', 'page': 2}
response = requests.get('https://api.example.com/search', params=params)
print(response.url) # This will show the full URL sent
print(response.json())
Handling Errors
Error handling is essential when dealing with web requests. Here’s a basic example of catching exceptions:
import requests
try:
response = requests.get('https://api.nonexistentwebsite.com')
response.raise_for_status() # Raises HTTPError for bad responses
except requests.exceptions.HTTPError as err:
print(f"HTTP error occurred: {err}")
except requests.exceptions.RequestException as err:
print(f"Request error: {err}")
Conclusion
The?requests?library in Python provides powerful and flexible tools for interacting with web services. From basic GET and POST requests to handling headers and errors, this library makes it easier than ever to work with HTTP in Python. Whether you're fetching data from a public API or sending data to a remote server,?requests?is a handy library to have in your toolkit.