2023-04-08 11:42:25 +01:00
|
|
|
---
|
2024-06-16 18:30:03 +01:00
|
|
|
tags:
|
|
|
|
- python
|
|
|
|
- APIs
|
|
|
|
- networks
|
2023-04-08 11:42:25 +01:00
|
|
|
---
|
|
|
|
|
|
|
|
# Making network requests in Python
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
We can use the `requests` package to make API requests to
|
2024-02-17 11:57:44 +00:00
|
|
|
[RESTful](RESTful_APIs.md) resources and handle the data as
|
2024-02-02 15:58:13 +00:00
|
|
|
JSON.
|
2023-04-08 11:42:25 +01:00
|
|
|
|
|
|
|
```sh
|
|
|
|
pip install requests
|
|
|
|
```
|
|
|
|
|
|
|
|
Here is a basic architecture for making a `GET` request in Python.
|
|
|
|
|
|
|
|
```py
|
|
|
|
import requests
|
|
|
|
|
|
|
|
def get_data(url):
|
|
|
|
response = requests.get(url)
|
|
|
|
if response.status_code == 200:
|
|
|
|
return response.json()
|
|
|
|
else:
|
|
|
|
raise Exception(
|
|
|
|
f"Failed to fetch data from API. Status code: {response.status_code}")
|
|
|
|
|
|
|
|
def main():
|
|
|
|
url = "https://dummyjson.com/products/1"
|
|
|
|
|
|
|
|
try:
|
|
|
|
data = get_data(url)
|
|
|
|
print(data)
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
prin(e)
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|
|
|
|
```
|
|
|
|
|
|
|
|
## Parsing returned data
|
|
|
|
|
|
|
|
Running `main` returns:
|
|
|
|
|
|
|
|
```py
|
|
|
|
{
|
|
|
|
"id":1,
|
|
|
|
"title":"iPhone 9",
|
|
|
|
"description":"An apple mobile which is nothing like apple",
|
|
|
|
"price":549,
|
|
|
|
"discountPercentage":12.96,
|
|
|
|
"rating":4.69,
|
|
|
|
"stock":94,
|
|
|
|
"brand":"Apple",
|
|
|
|
"category":"smartphones",
|
|
|
|
"thumbnail":"https://i.dummyjson.com/data/products/1/thumbnail.jpg",
|
|
|
|
"images":[
|
|
|
|
"https://i.dummyjson.com/data/products/1/1.jpg",
|
|
|
|
"https://i.dummyjson.com/data/products/1/2.jpg",
|
|
|
|
"https://i.dummyjson.com/data/products/1/3.jpg",
|
|
|
|
"https://i.dummyjson.com/data/products/1/4.jpg",
|
|
|
|
"https://i.dummyjson.com/data/products/1/thumbnail.jpg"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
This is JSON but in Python is a
|
2024-02-17 11:57:44 +00:00
|
|
|
[dictionary](Dictionaries_in_Python.md)
|
2023-04-08 11:42:25 +01:00
|
|
|
|
2024-02-02 15:58:13 +00:00
|
|
|
We can use standard dictionary methods to handle the data. For example, we'll
|
|
|
|
add to the existing `try` block:
|
2023-04-08 11:42:25 +01:00
|
|
|
|
|
|
|
```py
|
|
|
|
example_key = "brand" # Replace with the key you want to access from the JSON data
|
|
|
|
if example_key in data:
|
|
|
|
print(f"Value of '{example_key}':", data[example_key])
|
|
|
|
else:
|
|
|
|
print(f"'{example_key}' not found in the JSON data")
|
|
|
|
```
|
|
|
|
|
|
|
|
Which, if successful, outputs:
|
|
|
|
|
|
|
|
```
|
|
|
|
Value of 'brand': Apple
|
|
|
|
```
|