×

Làm việc với HTTP requests bằng thư viện requests trong Python

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