Lập trình viên Python thường xuyên phải tương tác với các API và web service, và một trong những thư viện phổ biến nhất để thực hiện điều này là requests
. Thư viện này cung cấp một cách tiếp cận đơn giản và hiệu quả để gửi và nhận HTTP requests. Trong bài viết này, chúng ta sẽ tìm hiểu cách làm việc với các HTTP requests bằng cách sử dụng thư viện requests
trong Python.
Cài đặt thư viện requests
Đầu tiên, bạn cần cài đặt thư viện requests
nếu chưa có. Bạn có thể cài đặt thông qua pip
với câu lệnh sau:
pip install requests
Gửi HTTP GET Request
Một trong những loại HTTP request phổ biến nhất là GET request, được sử dụng để truy xuất thông tin từ server. Dưới đây là cách thực hiện một GET request đơn giản:
import requests
response = requests.get('https://jsonplaceholder.typicode.com/posts')
print(response.status_code) # Kiểm tra mã trạng thái
print(response.json()) # Hiển thị nội dung phản hồi dưới dạng JSON
Gửi HTTP POST Request
POST request thường dùng để gửi dữ liệu đến server. Đây là một ví dụ về cách sử dụng POST request để gửi dữ liệu:
import requests
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.status_code)
print(response.json())
Sử dụng Headers và Parameters
Đôi khi bạn cần gửi thêm thông tin như headers hoặc parameters cùng với request. Dưới đây là cách thực hiện:
import requests
url = 'https://jsonplaceholder.typicode.com/posts'
headers = {'Content-Type': 'application/json'}
params = {'userId': 1}
response = requests.get(url, headers=headers, params=params)
print(response.status_code)
print(response.json())
Xử lý Lỗi
Khi gửi requests, không phải lúc nào bạn cũng nhận được phản hồi thành công. Do đó, việc kiểm tra và xử lý lỗi là rất quan trọng:
import requests
try:
response = requests.get('https://jsonplaceholder.typicode.com/invalid-url')
response.raise_for_status() # Gây ra lỗi nếu có vấn đề
except requests.exceptions.HTTPError as err:
print(f'HTTP error occurred: {err}')
except Exception as err:
print(f'Other error occurred: {err}')
else:
print('Success!')
Gửi Files
Bạn có thể gửi tệp tin (files) thông qua POST request bằng thư viện requests
như sau:
import requests
url = 'https://httpbin.org/post'
files = {'file': open('test.txt', 'rb')}
response = requests.post(url, files=files)
print(response.status_code)
print(response.json())
Tùy chỉnh Timeout và Retry
Cuối cùng, việc thiết lập thời gian timeout và retry là cần thiết khi làm việc với mạng không ổn định:
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
try:
response = session.get('https://jsonplaceholder.typicode.com/posts', timeout=5)
print(response.status_code)
print(response.json())
except requests.exceptions.Timeout:
print('The request timed out')
Kết luận
Thư viện requests
trong Python cung cấp mọi tính năng cần thiết để làm việc với các HTTP requests một cách thuận tiện và hiệu quả. Từ việc gửi các GET và POST requests đơn giản, quản lý headers và parameters, đến xử lý lỗi và gửi files, requests
là công cụ không thể thiếu cho bất kỳ lập trình viên nào làm việc với web services hoặc API.
Bằng cách nắm vững thư viện này, bạn sẽ dễ dàng tương tác với các dịch vụ web và API, từ đó phát triển các ứng dụng mạnh mẽ và đáng tin cậy hơn.
Comments