Trong bài viết này, chúng ta sẽ làm việc với 5 API khác nhau sử dụng các loại xác thực khác nhau. Chúng tôi sẽ sử dụng Python để sử dụng các API
Không phải tất cả các API đều được ghi chép đầy đủ như Twilio. Hướng dẫn này sẽ giúp bạn làm việc với các API được bảo mật bằng Keys, BasicAuth hoặc OAuth2
Chúng tôi sẽ làm việc với APIS sau
- Sự thật về mèo
- Cat as a Service [CAAS]
- API Twilio
- API GitHub
- API thiên tài
Bạn có thể tìm mã nguồn ở đây
Mục lục
- API không an toàn
- Đọc các giá trị từ. tập tin env
- API có khóa
- API có xác thực cơ bản
- Trình bao bọc API
- Đối tượng phiên
- API được bảo mật qua OAuth2
- Sử dụng API GitHub [OAuth2]
- Sử dụng API Genius [OAuth2]
Một số quen thuộc với thư viện yêu cầu dự kiến. Nếu bạn cần làm mới, bạn có thể tham khảo bài viết trước của tôi
API không an toàn
Cat Facts API không yêu cầu bất kỳ xác thực nào và khá đơn giản để làm việc với. Hãy tạo một yêu cầu đến điểm cuối sau
//cat-fact.herokuapp.com/facts
API trên trả về Sự kiện mèo ngẫu nhiên
import requests
api_endpoint = "//cat-fact.herokuapp.com/facts"
response = requests.get[
api_endpoint
]
for idx, item in enumerate[response.json[]]:
print[f"{idx+1}. {item['text']}"]
Đọc từ. tập tin env
Trước khi chuyển sang các phần tiếp theo, hãy xem cách đọc các biến từ một. tập tin env. Bạn nên lưu trữ thông tin đăng nhập của mình trong một. env để tránh chúng bị lộ cho người khác
Chúng ta sẽ cần cài đặt thư viện python-dotenv
pip install python-dotenv
Giả sử có một. env với một số Mã thông báo API ngẫu nhiên
API_TOKEN = "SOME API TOKEN"
Hãy thử đọc API Token trong Python
from dotenv import load_dotenv
import os
load_dotenv[]
API_TOKEN = os.environ.get["API_TOKEN"]
Hàm get chấp nhận một tên biến được lưu trữ trong. tệp env làm đối số
API có khóa
Đây là hình thức xác thực phổ biến nhất khi sử dụng API. Khóa API/Mã thông báo được chuyển vào dưới dạng tiêu đề trong khi thực hiện yêu cầu. Chúng tôi sẽ làm việc với API Cat as a Service [CAAS]. Bạn có thể lấy chìa khóa tại đây
from dotenv import load_dotenv
import os
import requests
api_endpoint = "//api.thecatapi.com/v1/breeds"
load_dotenv[]
CAT_API_KEY = os.environ.get["CAT_API_KEY"]
headers = {
"x-api-key" : CAT_API_KEY
}
response = requests.get[
api_endpoint,
headers = headers
]
for idx, item in enumerate[response.json[]]:
print[f"{idx+1}. {item['name']} : {item['description']}"]
Chúng tôi đã tạo một từ điển có tên là tiêu đề để lưu trữ Khóa API. Chìa khóa trong từ điển là “x-api-key”. Tuy nhiên, điều này có thể khác nhau dựa trên API bạn đang làm việc với. Một số API yêu cầu khóa được đặt tên là “Ủy quyền”, “ủy quyền”, “mã thông báo”. Tốt nhất là tham khảo phần xác thực tài liệu API của bạn
Bearer Authentication khá phổ biến và nó yêu cầu từ “Bearer” [lưu ý khoảng trắng] ở đầu Mã thông báo/Khóa API
headers = {
"authorization": f"Bearer {access_token}"
}
Chúng tôi sẽ sử dụng xác thực người mang trong một ví dụ ở phần sau
API có xác thực cơ bản
API được bảo mật bằng Basic Auth yêu cầu tên người dùng và mật khẩu. Thông thường, tên người dùng là Client ID và mật khẩu là Client Secret của API. Trong một số trường hợp, tên người dùng có thể để trống. Điều này nên được đề cập trong tài liệu API
API Twilio được bảo mật bằng Basic Auth. Bạn có thể đăng ký trên trang web Twilio và có quyền truy cập vào thông tin đăng nhập API
from requests.auth import HTTPBasicAuth
from dotenv import load_dotenv
import os
import requests
load_dotenv[]
TWILIO_ACCOUNT_SID = os.environ.get["TWILIO_ACCOUNT_SID"]
TWILIO_ACCOUNT_TOKEN = os.environ.get["TWILIO_ACCOUNT_TOKEN"]
api_endpoint = f'//api.twilio.com/2010-04-01/Accounts/{TWILIO_ACCOUNT_SID}/Calls.json?PageSize=5'
auth = HTTPBasicAuth[TWILIO_ACCOUNT_SID, TWILIO_ACCOUNT_TOKEN]
response = requests.get[api_endpoint , auth = auth]
for idx, item in enumerate[response.json[]['calls']]:
print[f"{idx+1}. {item['duration']}"]
Chúng tôi tạo một phiên bản HTTPBasicAuth. Nó lấy tên người dùng và mật khẩu tương ứng làm đối số. Trường hợp này được thông qua như một đối số khi thực hiện yêu cầu. Trong trường hợp twilio, tên người dùng là sid tài khoản của bạn và mật khẩu là mã thông báo tài khoản của bạn. Như đã đề cập trước đây, nó có thể khác nhau đối với các API khác nhau. Nếu API bạn đang sử dụng, sử dụng Basic Auth để bảo mật các điểm cuối của nó, hãy tham khảo tài liệu để biết tên người dùng và mật khẩu
Trình bao bọc API
Đối với Python, trình bao bọc API về cơ bản là các thư viện/gói có thể được cài đặt bằng pip. Các thư viện này giúp giao tiếp với các API theo cách rõ ràng hơn về mặt cú pháp. Dưới vỏ bọc, các thư viện vẫn sử dụng các yêu cầu và tiêu đề để thực hiện các yêu cầu. Tuy nhiên, các trình bao bọc làm cho mã của bạn trông gọn gàng hơn