Bỏ để qua phần nội dung

Python và API: Cách sử dụng các yêu cầu Python để xây dựng ứng dụng dựa trên API

Chào bạn! Bạn đang muốn nâng cao kỹ năng Python của mình và tìm hiểu cách tích hợp các API mạnh mẽ vào ứng dụng của mình? Sau đó hướng dẫn này là dành cho bạn.

Tôi sẽ hướng dẫn bạn cách sử dụng thư viện Yêu cầu Python tuyệt vời để tương tác với các loại API web. Với một số kiến ​​thức và Yêu cầu Python cơ bản, bạn sẽ có thể:

  • Truy vấn dữ liệu từ bất kỳ điểm cuối API nào
  • Xây dựng các ứng dụng tích hợp với các dịch vụ phổ biến như Twitter, Stripe, Twilio, v.v.
  • Tự động hóa quy trình làm việc bằng cách kết nối các API với nhau
  • Mở khóa vô số dữ liệu và chức năng hữu ích để nâng cao ứng dụng Python của bạn

Nghe có vẻ thú vị phải không? Hãy đi sâu vào!

Tại sao nên sử dụng API trong Python?

Trước khi nhập mã, trước tiên chúng ta hãy hiểu tại sao kết nối với API rất hữu ích cho các nhà phát triển.

API cho phép các ứng dụng phần mềm khác nhau giao tiếp với nhau. Các công ty và tổ chức cung cấp API để cho phép các nhà phát triển xây dựng ứng dụng bằng dịch vụ của họ dễ dàng hơn.

Dưới đây là một số lý do hàng đầu để sử dụng API trong mã của bạn:

  • Tiết kiệm thời gian – Đừng xây dựng lại từ đầu thứ gì đó đã tồn tại dưới dạng API!
  • Tận dụng dữ liệu – Truy cập các nguồn dữ liệu hữu ích như thời tiết, chứng khoán, mạng xã hội, v.v.
  • Mở rộng chức năng – Tích hợp bản đồ, thanh toán, thông báo và hơn thế nữa.
  • Tự động hóa quy trình làm việc – Kết nối các hệ thống khác nhau với nhau một cách liền mạch.
  • Xây dựng ứng dụng nhanh hơn – Tập trung vào logic ứng dụng của bạn hơn là cơ sở hạ tầng cơ bản.

Nói tóm lại, các API được thiết kế tốt sẽ giúp bạn phát triển các ứng dụng tốt hơn, nhanh hơn.

Theo Báo cáo trạng thái API năm 2024 của Postman, việc áp dụng API công khai đang tăng lên nhanh chóng:

  • 72% tổ chức sử dụng API công khai như một phần hoạt động kinh doanh cốt lõi của họ.
  • 58% có API công khai.
  • Yêu cầu API đã tăng hơn 650% từ năm 2020 đến năm 2021 đối với người phản hồi.

Với việc API ngày càng trở nên phổ biến trong các ngành, đây là thời điểm tuyệt vời để nâng cao kỹ năng kết nối với chúng bằng Python của bạn.

Bắt đầu với các yêu cầu Python

Python có các thư viện tuyệt vời giúp làm việc với API dễ dàng. Phổ biến nhất là yêu cầu.

Yêu cầu cho phép bạn gọi API chỉ bằng một vài dòng mã:

import requests

response = requests.get(‘https://api.data.gov/education‘)

So với các lựa chọn thay thế cấp thấp hơn như tích hợp sẵn của Python urllib mô-đun, Yêu cầu giúp bạn tiết kiệm rất nhiều thời gian và đỡ đau đầu.

Một số tính năng chính của Yêu cầu:

  • API đơn giản, thanh lịch
  • Làm cho các yêu cầu HTTP cực kỳ dễ dàng
  • Hỗ trợ JSON tích hợp
  • Xử lý tiêu đề, tham số, xác thực
  • Tự động thử lại khi có lỗi mạng
  • Hàng loạt các tính năng cao cấp

Để cài đặt Yêu cầu, chỉ cần chạy:

pip install requests

Sau đó import requests trong mã của bạn và bạn đã sẵn sàng bắt đầu thực hiện lệnh gọi API!

Hãy xem qua một số ví dụ đơn giản.

Thực hiện một yêu cầu NHẬN

Lệnh gọi API phổ biến nhất là yêu cầu GET để truy xuất dữ liệu từ điểm cuối.

Dưới đây là cách thực hiện yêu cầu GET với Yêu cầu:

import requests 

response = requests.get(‘https://api.github.com/repos/requests/requests‘)

Thao tác này sẽ gửi yêu cầu GET đến điểm cuối API GitHub để truy xuất dữ liệu trên kho Yêu cầu.

Chúng tôi nhận lại một Response đối tượng chứa mã trạng thái, tiêu đề phản hồi và dữ liệu.

Để in mã trạng thái phản hồi:

print(response.status_code)

>>> 200

Mã trạng thái 200 cho biết yêu cầu của chúng tôi đã thành công. Nhiều mã trạng thái khác tồn tại cho biết lỗi hoặc lỗi – chúng tôi sẽ đề cập đến cách xử lý những mã đó sau.

Để truy cập dữ liệu phản hồi, chỉ cần gọi .json():

data = response.json()

print(data[‘stargazers_count‘])

>>> 64245

Dữ liệu được phân tích cú pháp dưới dạng JSON tự động. Điều này làm cho việc làm việc với API JSON trở nên rất đơn giản.

Các thông số vượt qua

Đối với nhiều API, bạn cần truyền tham số để lọc dữ liệu, phân trang kết quả, v.v.

Truyền các tham số dưới dạng từ điển cho params tranh luận:

params = {‘type‘: ‘owner‘, ‘sort‘: ‘updated‘}
response = requests.get(‘https://api.github.com/repos/kennethreitz/requests‘, 
                        params=params)

Yêu cầu mã hóa các tham số và thêm chúng vào URL cho bạn.

Bạn cũng có thể truyền tham số trực tiếp vào URL:

response = requests.get(‘https://api.github.com/repos/kennethreitz/requests?type=owner&sort=updated‘)

Dù bằng cách nào cũng có tác dụng nhưng việc chuyển từ điển được coi là sạch hơn.

POST yêu cầu

Để tạo tài nguyên trên máy chủ, bạn sẽ sử dụng yêu cầu POST.

Truyền dữ liệu để đăng dưới dạng từ điển tới json tham số:

data = {‘name‘: ‘John Smith‘, ‘email‘: ‘[email protected]‘}
response = requests.post(‘https://api.example.com/users‘, json=data)

Điều này mã hóa dữ liệu dưới dạng JSON và gửi POST tới API để tạo tài nguyên người dùng mới.

Đối với POST, bạn cũng nên xác thực mã trạng thái được trả về:

if response.status_code == 201:
  print(‘User created!‘)

Trạng thái 201 có nghĩa là tài nguyên đã được tạo thành công trên máy chủ.

ĐẶT, VÁ, XÓA

Ngoài GET và POST, các phương thức HTTP phổ biến khác là:

  • PUT – Cập nhật tài nguyên hiện có
  • – Cập nhật một phần tài nguyên
  • DELETE – Xóa tài nguyên

Chúng hoạt động tương tự, chỉ cần gọi phương thức tương ứng trên requests:

# PUT - Update user
requests.put(‘https://api.example.com/users/123‘, json=updated_data) 

# PATCH - Partial update  
requests.patch(‘https://api.example.com/users/123‘, json=partial_data)

# DELETE - Delete user
requests.delete(‘https://api.example.com/users/123‘)

Bây giờ bạn đã biết cách thực hiện lệnh gọi API bằng tất cả các phương thức HTTP phổ biến!

Xử lý phản hồi API

Khi làm việc với API, bạn cần xử lý dữ liệu phản hồi dựa trên mã trạng thái được máy chủ trả về.

API sử dụng mã trạng thái HTTP tiêu chuẩn để biểu thị thành công, lỗi hoặc thất bại. Một số cái phổ biến bao gồm:

  • 200 – OK – Yêu cầu đã thành công
  • 201 – Created – Tài nguyên đã được tạo thành công
  • 400 – Yêu cầu không hợp lệ – Yêu cầu không đúng định dạng hoặc thiếu dữ liệu
  • 401 – Không được phép – Yêu cầu xác thực
  • 403 – Bị cấm – Bạn không có quyền truy cập vào tài nguyên này
  • 404 – Không tìm thấy – Tài nguyên không tồn tại
  • 500 – Server Error – Máy chủ gặp lỗi không mong muốn

Bạn kiểm tra mã trạng thái trên đối tượng Response:

response = requests.get(‘https://api.example.com/items/123‘)

if response.status_code == 200:
  # Success!
elif response.status_code == 404:
  # Notify user item does not exist

Để ngắn gọn, tôi khuyên bạn nên gói tất cả lệnh gọi Yêu cầu của mình vào một hàm trợ giúp như:

def make_api_request(endpoint):
  response = requests.get(endpoint)

  response.raise_for_status()

  return response.json()

Điều này làm cho mã sạch hơn cũng như tập trung xử lý lỗi ở một nơi.

raise_for_status() sẽ đưa ra một ngoại lệ nếu có mã lỗi HTTP như 500 hoặc 404, giúp bạn không phải kiểm tra thủ công mỗi lần.

Xác thực bằng API

Nhiều API yêu cầu xác thực để hạn chế quyền truy cập. Một số hình thức xác thực API phổ biến bao gồm:

  • Khóa API – Truyền khóa API duy nhất thông qua tiêu đề hoặc tham số yêu cầu
  • Xác thực cơ bản – Truyền tên người dùng và mật khẩu với yêu cầu
  • Mã thông báo mang – Gửi mã thông báo mang OAuth 2.0 từ nhà cung cấp xác thực
  • xác thực thông báo – Tương tự như xác thực cơ bản nhưng thông tin đăng nhập được mã hóa

Yêu cầu làm cho việc xử lý xác thực trở nên đơn giản.

Để sử dụng khóa API, hãy chuyển nó làm tiêu đề:

headers = {‘Authorization‘: ‘Bearer YOUR_API_KEY‘}
response = requests.get(‘https://api.example.com‘, headers=headers)

Đối với xác thực cơ bản, hãy cung cấp tên người dùng và mật khẩu dưới dạng tuple:

requests.get(‘https://api.example.com‘, 
            auth=(‘username‘, ‘password‘))

Yêu cầu sẽ xử lý việc mã hóa thông tin xác thực của bạn một cách chính xác.

Đối với mã thông báo mang từ các nhà cung cấp OAuth như Facebook, Twitter, Google, v.v.:

params = {‘access_token‘: ‘OAUTH_TOKEN‘}
requests.get(‘https://api.example.com‘, params=params)  

Chuyển mã thông báo truy cập dưới dạng tham số và Yêu cầu sẽ xử lý phần còn lại.

Xác thực phù hợp là rất quan trọng để truy cập API một cách an toàn trong ứng dụng và quy trình làm việc Python của bạn.

Các phương pháp hay nhất để làm việc với API

Bây giờ bạn đã biết làm thế nào để gọi API bằng Python, hãy cùng thảo luận về một số phương pháp hay nhất để làm việc hiệu quả với chúng:

Xử lý lỗi một cách khéo léo

API có thể gặp lỗi theo những cách không mong muốn – máy chủ ngừng hoạt động, mạng ngừng hoạt động, nhà cung cấp thực hiện thay đổi.

Khi thực hiện các yêu cầu API:

  • Sử dụng khối thử/ngoại trừ để bắt lỗi
  • Xử lý các trường hợp ngoại lệ phổ biến như ConnectionErrors
  • Kiểm tra mã trạng thái và xử lý các phản hồi không phải 200
  • Sử dụng chiến lược rút lui theo cấp số nhân để thử lại các yêu cầu không thành công

Điều này đảm bảo ứng dụng của bạn xuống cấp một cách nhẹ nhàng khi API bị lỗi.

Tôn trọng giới hạn tỷ lệ

Để ngăn chặn lạm dụng, API thực thi giới hạn tốc độ đối với các yêu cầu mỗi giờ/ngày.

Vượt quá những giới hạn này sẽ chặn quyền truy cập của bạn, có thể là vĩnh viễn.

Để tránh điều này:

  • Xem lại tài liệu giới hạn tỷ lệ và hiểu hạn ngạch của bạn
  • Giới hạn yêu cầu - chỉ thực hiện cuộc gọi khi cần thiết
  • Triển khai bộ đếm thời gian chờ nếu bạn đạt đến giới hạn để tạm dừng trước khi thử lại
  • Không bao giờ spam hoặc lạm dụng API! Điều này sẽ dẫn đến các khối.

Giới hạn tỷ lệ bảo vệ API để chúng hoạt động cho tất cả người dùng. Tôn trọng họ trong cách sử dụng của bạn.

Phản hồi bộ đệm

API có thể chậm tùy thuộc vào khả năng kết nối. Để có hiệu suất, hãy xem xét phản hồi của bộ nhớ đệm, đặc biệt nếu dữ liệu không thay đổi thường xuyên.

Các thư viện bộ nhớ đệm Python phổ biến bao gồm Redis, Memcached và SQLAlchemy.

Bộ nhớ đệm tránh các cuộc gọi mạng không cần thiết cho các yêu cầu lặp lại.

Ví dụ và cách sử dụng API Python

Bây giờ, hãy xem một số ví dụ thực tế về các API phổ biến và cách bạn có thể truy cập chúng bằng Python.

API Twitter

API Twitter cho phép truy vấn các tweet, người dùng, hashtag và phân tích. Bạn cần đăng ký tài khoản nhà phát triển Twitter để nhận thông tin xác thực API.

cài đặt buồn bã thư viện để có giao diện API Twitter thân thiện hơn:

pip install tweepy

Ví dụ tìm nạp tweet cho hashtag:

import tweepy

client = tweepy.Client(bearer_token=TWITTER_TOKEN)

tweets = client.search_recent_tweets(query="#python")

for tweet in tweets.data:
   print(tweet.text)

Xem tài liệu buồn tẻ để biết thêm chi tiết.

API GitHub

API GitHub cho phép truy cập theo chương trình vào kho lưu trữ, mã, người dùng GitHub, v.v. mà không cần xác thực.

Ví dụ tìm nạp kho lưu trữ của người dùng:

import requests

response = requests.get(‘https://api.github.com/users/kennethreitz/repos‘)

for repo in response.json():
  print(repo[‘name‘]) 

Xem Tài liệu API GitHub cho nhiều trường hợp sử dụng hơn.

API sọc

API Stripe cho phép xây dựng các khoản thanh toán vào ứng dụng và trang web.

cài đặt sọc thư viện và nhập khẩu:

pip install stripe

import stripe

Ví dụ tạo khoản phí:

stripe.api_key = ‘STRIPE_SECRET_KEY‘ 

charge = stripe.Charge.create(
  amount=1000,
  currency=‘usd‘,
  source=‘tok_visa‘ # Token from Stripe.js
)

Stripe xử lý khối lượng lớn các khoản thanh toán cho bạn.

Xem Tài liệu API của Stripe để có tài liệu tham khảo API đầy đủ.

Có rất nhiều API tuyệt vời khác như Slack, Twilio, Google Maps, AWS, v.v. Điều quan trọng là tìm nguồn dữ liệu phù hợp cho ứng dụng của bạn và tận dụng sức mạnh của API.

Kết luận

Tôi hy vọng hướng dẫn này cung cấp thông tin tổng quan hữu ích về cách tạo yêu cầu API bằng Python bằng thư viện Yêu cầu. Dưới đây là một số điểm chính:

  • yêu cầu làm cho việc gọi API trở nên đơn giản – cài đặt nó bằng pip
  • Sử dụng các phương thức HTTP phổ biến như GET, POST, PUT, DELETE cho các hoạt động CRUD
  • Truyền tham số, xác thực, tiêu đề và dữ liệu dễ dàng
  • Xử lý mã trạng thái và lỗi đúng cách
  • Triển khai các phương pháp hay nhất như giới hạn tốc độ và bộ nhớ đệm
  • Tích hợp các API thú vị như Twitter, GitHub, Stripe và hơn thế nữa!

API giúp bạn xây dựng ứng dụng tốt hơn nhanh hơn bằng cách cho phép bạn tận dụng dữ liệu và dịch vụ hiện có. Python và Yêu cầu cung cấp một cách tuyệt vời để khai thác sức mạnh của API trong mã của bạn.

Đối với các bước tiếp theo, tôi khuyên bạn nên duyệt trang chính thức Yêu cầu tài liệu, đọc tài liệu API của bất kỳ dịch vụ nào bạn muốn tích hợp và xem xét một số kho lưu trữ bằng API Python như này.

Tôi hy vọng bạn thấy hướng dẫn này hữu ích! Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi nào khác về việc sử dụng Python và API. Chúc mừng mã hóa!

Tham gia vào cuộc đối thoại

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *