Understanding Python Requests

Python Requests Classes in San Francisco

Using Python requests minimizes the complexities of making them, allowing you to focus on consuming data and interacting with various services in the application. Think of the Python requests library as the standard for creating HTTP requests. If you decide to take a Python bootcamp in San Francisco or another tech hub, you will likely cover this topic.

Installing the Requests Library

Before you can use Python requests, you must first install the relevant library. Enter the following command:

$ pip install requests

When it comes time to import the Python requests library, enter:

import requests

Python GET Request

Depending on the action you want to perform as you make a request, there are several HTTP methods used in Python requests. The Python GET request is among the most common. 

Use this method when you want to retrieve or “get” data from a particular source. To use it, invoke:

requests.get( )

When you make your Python GET request, you will receive a response. You can also store that return value as a variable known as “response.” 

Status Codes

A status code tells you the status of your request, and there are numerous potential responses. For example, “404 NOT FOUND” means your chosen resource was not found, whereas “200 OK” indicates it was successful; successful responses range from 200 to 400. Access .status_code to view the status code. 

Some programmers will use the Python request responses to make decisions within the coding. For example, you could use if and elif statements depending on whether the response is “200” or “400.” 

Requests can make this entire process of conditionals related to Python requests easier. Incorporate a response instance within a conditional expression that evaluates to True or False depending on the status code value. Doing this only works if you want to know that the Python requests were successfully generated regardless of whether content gets returned. 


In many cases, your GET Python requests will also contain a payload or message within the body. You can view it in multiple formats based on the methods and attributes related to response. 

Use .content to view it in bytes and use response.text to convert the raw bytes of your payload into a string with character encoding. You can either specify the coding for these Python requests or the requests will attempt to guess it based on the headers in the response. 


You can also gather information about Python requests from their headers, which provide you with information like a time limit for caching the response and the content type of the payload. View the headers by accessing .headers

The result will be a dictionary-like object that lets you see header values based on keys. Keep in mind that the relevant HTTP spec for these objects is not case-sensitive. 

Customizing GET Requests

Your San Francisco Python bootcamp should also cover customizing GET requests. There are multiple methods of doing so, including the following. 

Query String Parameters

Customize your Python request by sending values via query string parameters within the URL. If you want to take advantage of this while using get( ), pass the data to params to modify your results that the search API sends back. 

With this method of customization, your Python requests can feature passing params to get( ) in your choice of form, including a dictionary, tuples or bytes. 

Python Request Headers

You can also customize your GET requests is via the request header by passing your dictionary made of HTTP headers to your get( ) command with the parameter headers. This aspect of Python requests relies on the Accept header letting the server know the content type that your application is capable of handling.

For instance, you could go into the Accept header and specify text-match media type to highlight matching terms. 

Other HTTP Methods for Python Requests

While GET is a popular request method, it is not the only one. Others include PUT, POST, HEAD, PATCH, DELETE and OPTIONS. The signatures for each of these are very similar to that of get( ) but with the word replaced. One example would be requests.post( ).

Each of these functions uses the appropriate HTTP method to make a request of the httpbin service. They also offer the same methods of inspecting their responses as with the previous types of Python requests including status codes, response bodies and headers. 

Message Body

The HTTP specification means that the PATCH, POST and PUT requests will pass data via the message body. This contrasts with the way the query string sends it through the parameters and means that you can use Python requests to pass the payload onto the “data” parameter of the corresponding function. 

The form data can be sent as a dictionary or tuples for these requests, and there is also the option of sending JSON data, which requires the use of the json parameter. If you use json to pass JSON data, then Python requests will automatically serialize the data and add the content-type header. 

Inspecting Requests

When making a request, the library will prepare it before sending the request to your destination server. Examples of this preparation include the serializing of JSON content and validating headers. 

You can access .request to look at the PreparedRequest. This will show you a range of information about your current Python requests, including URL, authentication, headers and payload. 


Many services require some sort of authentication with Python requests 

In most cases, you will give a server your credentials by sending data via a custom header or the Authorization header. All the previously mentioned request functions include the auth parameter for passing credentials. 

For example, using the GitHub Authenticated User API requires you to pass your username and password to get( ) in the form of a tuple. 

You can use other authentication methods for your Python requests, including HTTPProxyAuth and HTTPDigestAuth, both of which are available out of the box from requests. It is also possible to use an authentication mechanism that you create: create an AuthBase subclass before implementing ___call___( ). 

Keep in mind that a poorly constructed authentication mechanism can cause security vulnerabilities, so it is best to use known methods unless you need a custom one. 

Maximizing Performance

You should always consider the performance implications of your Python requests, especially when using them in production applications. To help your application run smoothly, pay attention to features such as retry limits, sessions and timeout controls, all of which you can ask about during a Python bootcamp in San Francisco.

*Please note, these articles are for educational purposes and the topics covered may not be representative of the curriculum covered in our boot camp. Explore our curriculum to see what you’ll learn in our program.

Get Program Info

The following requires your attention:

Ready to learn more about Berkeley Data Analytics Bootcamp in San Francisco? Contact an admissions advisor at (510) 306-1218.