structure updates
This commit is contained in:
108
tech_docs/python/requests.md
Normal file
108
tech_docs/python/requests.md
Normal file
@@ -0,0 +1,108 @@
|
||||
The `requests` library in Python is a simple, yet powerful HTTP library, designed for human beings. It provides methods to send all kinds of HTTP requests, making it invaluable for a wide range of applications involving HTTP requests to interact with web services or APIs.
|
||||
|
||||
### Requests Library Usage Guide
|
||||
|
||||
#### Installation
|
||||
```sh
|
||||
pip install requests
|
||||
```
|
||||
|
||||
### Basic HTTP Requests
|
||||
The core of `requests` is its ability to make all types of HTTP requests. Here are brief examples categorized by request type:
|
||||
|
||||
#### GET Requests
|
||||
Retrieve data from a specified resource.
|
||||
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.get('https://api.github.com')
|
||||
print(response.json()) # Convert JSON response to a dictionary
|
||||
```
|
||||
|
||||
#### POST Requests
|
||||
Send data to a server to create/update a resource.
|
||||
|
||||
```python
|
||||
payload = {'key': 'value'}
|
||||
response = requests.post('https://httpbin.org/post', data=payload)
|
||||
print(response.text)
|
||||
```
|
||||
|
||||
### Working with Parameters and Headers
|
||||
|
||||
#### Passing URL Parameters
|
||||
Send GET requests with query parameters.
|
||||
|
||||
```python
|
||||
params = {'q': 'Python HTTP library'}
|
||||
response = requests.get('https://www.google.com/search', params=params)
|
||||
print(response.url) # Check the formed URL
|
||||
```
|
||||
|
||||
#### Custom Headers
|
||||
Modify request headers for tasks like setting user-agent or authentication tokens.
|
||||
|
||||
```python
|
||||
headers = {'User-Agent': 'My App/0.0.1'}
|
||||
response = requests.get('https://api.github.com', headers=headers)
|
||||
```
|
||||
|
||||
### Handling Response Content
|
||||
|
||||
#### Response Status Codes
|
||||
Check response status to handle different scenarios like success or error.
|
||||
|
||||
```python
|
||||
if response.status_code == 200:
|
||||
print('Success!')
|
||||
elif response.status_code == 404:
|
||||
print('Not Found.')
|
||||
```
|
||||
|
||||
#### JSON Response Content
|
||||
Directly access JSON response content for APIs that send back JSON data.
|
||||
|
||||
```python
|
||||
response = requests.get('https://api.github.com')
|
||||
print(response.json()) # JSON response content
|
||||
```
|
||||
|
||||
### Advanced Usage
|
||||
|
||||
#### Sessions with Context Managers
|
||||
Use Sessions for keeping certain parameters across requests.
|
||||
|
||||
```python
|
||||
with requests.Session() as session:
|
||||
session.headers.update({'User-Agent': 'My App'})
|
||||
response = session.get('https://api.github.com')
|
||||
```
|
||||
|
||||
#### Handling Timeouts
|
||||
Specify a timeout duration to avoid hanging indefinitely.
|
||||
|
||||
```python
|
||||
try:
|
||||
response = requests.get('https://api.github.com', timeout=1)
|
||||
except requests.Timeout:
|
||||
print('The request timed out')
|
||||
```
|
||||
|
||||
### Project Ideas
|
||||
|
||||
- **Web Scraping**: Automate data collection from websites, respecting their `robots.txt` policies, to gather data for analysis.
|
||||
|
||||
- **API Consumption**: Develop applications that interact with various third-party APIs for tasks like social media posting, weather updates, or cryptocurrency price tracking.
|
||||
|
||||
- **Automated Testing**: Create scripts to test web applications' APIs, checking their responses, status codes, and performance.
|
||||
|
||||
- **Website Monitoring**: Develop a tool to monitor website uptime by periodically sending requests and alerting you via email or SMS when your site goes down.
|
||||
|
||||
### Security and Best Practices
|
||||
|
||||
- **Sensitive Data**: Avoid sending sensitive information like passwords or API keys as URL parameters. Use headers or POST requests instead.
|
||||
- **Error Handling**: Always check for response status codes and handle exceptions like connection errors or timeouts gracefully.
|
||||
- **Session Objects**: Use Session objects for persistent connections, especially when making multiple requests to the same host.
|
||||
|
||||
The `requests` library
|
||||
Reference in New Issue
Block a user