[Python Tips] Requests

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@themarkymark·
0.000 HBD
[Python Tips] Requests
![](https://steemitimages.com/DQmSsFP8BDE1DkXNN9hh1729MRexyqupLEKfWJTsRskjt33/image.png)

**Requests is a powerful and easy to use HTTP library for Python**

Need to get HTML data?  Need to interact with an API?  **Requests** can do that.

While Python has a built-in library **urllib3** for these situations, **requests** wraps this library with an easy to use interface.

# Installation

To install requests, you can use pip to install it.

`pip install -U requests`

**The -U is a good practice to force an upgrade if it is already installed.**

I recommend using a virtual environment.  You can learn more about them in my previous tutorial on [Virtual Environments](https://steemit.com/programming/@themarkymark/python-tips-virtual-environments).

# Usage

While requests has a lot of functionality, I am going to cover the basic usage and you can refer to the documentation for the more advanced usage.

#### Basic Query

```
import requests
req = requests.get('https://pokeapi.co/api/v2/pokemon/ditto/`)
```

#### Status Codes
You can verify you have a proper response by checking the status code.

`req.status_code`

200 means everything went well, you can look up other codes [here](https://www.restapitutorial.com/httpstatuscodes.html).

You can also use this technique to verify a good status code.

`if req.status_code == requests.codes.ok:`

There is a cleaner way to send a request and check the status code:

```
import requests
req = req = requests.get('https://pokeapi.co/api/v2/pokemon/ditto/`)

try:
    req.raise_for_status()
except requests.exceptions.HTTPError as e: 
    print e
```

#### Data

You can retrieve the response data using `req.text`, `req.json()` as bytes with `req.content`, or raw with `req.raw`.

Most of the time you will be using `req.json()` and will be able to use the result as normal json data.

Requests can be used to **POST**, pass parameters, work with custom headers, and work with form data.  If you want to learn other uses of the requests library, check out their [documentation](https://2.python-requests.org/en/master/).

Requests is a simple by powerful python module that will handle 98% of your HTTP needs.

# My Python Tips Series

* [f-strings in Python 3.6](https://steemit.com/programming/@themarkymark/python-tips-f-strings-in-python-3-6-and-why-you-should-be-using-them)
* [Underscores in numeric literals](https://steemit.com/programming/@themarkymark/python-tips-underscores-in-numeric-literals)
* [A better interactive shell](https://steemit.com/programming/@themarkymark/python-tips-a-better-interactive-shell)
* [Secrets Module - New in 3.6](https://steemit.com/programming/@themarkymark/python-tips-secrets-module-new-in-3-6)
* [PEP 8](https://steemit.com/programming/@themarkymark/python-tips-pep-8)
* [Slices](https://steemit.com/programming/@themarkymark/python-tips-slices)
* [Named Tuples](https://steemit.com/programming/@themarkymark/python-tips-named-tuples)
* [Destructuring](https://steemit.com/programming/@themarkymark/python-tips-destructuring)
* [Counter](https://steemit.com/programming/@themarkymark/python-tips-counter)
* [Type Annotation](https://steemit.com/programming/@themarkymark/python-tips-type-annotation)
* [Jupyter Notebooks](https://steemit.com/programming/@themarkymark/python-tips-jupyter-notebooks)
* [Getting Help](https://busy.org/@themarkymark/python-tips-getting-help)
* [Virtual Environments](https://steemit.com/programming/@themarkymark/python-tips-virtual-environments)
* [Expiring Dict](https://steemit.com/programming/@themarkymark/python-tips-expiring-dict)
* [DRY Programming](https://steemit.com/programming/@themarkymark/python-tips-dry-programming)
* [Knowing what exists](https://steemit.com/programming/@themarkymark/python-tips-knowing-what-exists)
* [Apscheduler](https://steemit.com/utopian-io/@themarkymark/python-tips-apscheduler)
* [Caching data with CacheTools](https://steemit.com/development/@themarkymark/python-tips-caching-data-with-cachetools)
* [Walrus Operator](https://steemit.com/development/@themarkymark/python-tips-the-new-walrus-operator)
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,