Cách sử dụng FastAPI để xây dựng dịch vụ API hiệu suất cao
Cách sử dụng FastAPI để xây dựng dịch vụ API hiệu suất cao
FastAPI là một framework web hiện đại, nhanh chóng (hiệu quả), được thiết kế đặc biệt để xây dựng API. Nó dựa trên các gợi ý kiểu Python và hỗ trợ lập trình bất đồng bộ, cho phép các nhà phát triển xây dựng dịch vụ API hiệu suất cao, có tính khả dụng cao và độ trễ thấp. Bài viết này sẽ hướng dẫn bạn chi tiết cách sử dụng FastAPI để xây dựng dịch vụ API hiệu suất cao, chúng tôi sẽ giải thích từng bước để giúp bạn thực hiện toàn bộ quá trình từ chuẩn bị môi trường đến triển khai.
Bước 1: Chuẩn bị môi trường
Bạn cần đảm bảo rằng môi trường phát triển của bạn đã cài đặt Python 3.6+. Nếu chưa cài đặt, bạn có thể truy cập trang web chính thức của Python để tải xuống và cài đặt.
Cài đặt FastAPI và Uvicorn
FastAPI bản thân nó không cung cấp dịch vụ, cần một máy chủ ASGI để chạy. Ở đây chúng tôi sử dụng Uvicorn, một máy chủ ASGI hiệu suất cao. Bạn có thể sử dụng lệnh sau để cài đặt FastAPI và Uvicorn:
pip install fastapi uvicorn
Bước 2: Xây dựng API cơ bản
Hãy tạo một ứng dụng FastAPI đơn giản.
Tạo tệp ứng dụng
Trong thư mục dự án của bạn, tạo một tệp Python, chẳng hạn như main.py, sau đó viết mã sau vào trong:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
Trong mã trên, chúng tôi đã nhập FastAPI và tạo một thể hiện app. Sau đó, chúng tôi định nghĩa một tuyến đường GET, khi truy cập vào đường dẫn gốc /, sẽ trả về một phản hồi JSON đơn giản.
Khởi động máy chủ
Khởi động máy chủ FastAPI của bạn bằng lệnh sau:
uvicorn main:app --reload
main: chỉ tên tệp, không có phần mở rộng .py.app: chỉ thể hiện FastAPI.--reload: trong chế độ phát triển, máy chủ sẽ tự động khởi động lại khi có thay đổi tệp.
Bước 3: Định nghĩa tuyến đường và mô hình dữ liệu
Để xây dựng API phức tạp, bạn cần sử dụng Pydantic để định nghĩa mô hình dữ liệu.
Tạo mô hình dữ liệu
Thêm nội dung sau vào main.py:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
is_available: bool = True
Đoạn mã này sử dụng Pydantic để tạo một mô hình dữ liệu Item, bao gồm ba thuộc tính: tên sản phẩm, giá cả và tình trạng có sẵn.
Thêm tuyến đường mới
Tiếp theo, chúng ta có thể định nghĩa một tuyến đường POST mới để nhận dữ liệu kiểu Item:
@app.post("/items/")
async def create_item(item: Item):
return {"item_name": item.name, "item_price": item.price}
Trong tuyến đường này, FastAPI sẽ tự động xác thực dữ liệu đầu vào và ánh xạ nó vào mô hình Item.
Bước 4: Tự động tạo tài liệu
Một trong những lợi thế lớn nhất của FastAPI là khả năng tự động tạo tài liệu API. Bạn có thể xem tài liệu bằng cách truy cập các địa chỉ sau:
- Swagger UI:
http://127.0.0.1:8000/docs - ReDoc:
http://127.0.0.1:8000/redoc
Trong các tài liệu được tạo ra này, bạn có thể thử nghiệm API một cách tương tác, xem định dạng yêu cầu và phản hồi của từng tuyến đường.
Bước 5: Thêm xác thực
Trong ứng dụng thực tế, xác thực là một phần quan trọng. Hãy thêm một xác thực đơn giản dựa trên vai trò.
Thêm phụ thuộc bảo mật
Sử dụng phương thức Depends của FastAPI và OAuth2PasswordBearer để thực hiện xác thực:
from fastapi import Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
async def fake_decode_token(token):
return {"sub": token}
async def get_current_user(token: str = Depends(oauth2_scheme)):
user = fake_decode_token(token)
if user is None:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid authentication credentials")
return user
Bảo vệ tuyến đường
Sau đó, bạn có thể thêm xác thực vào các tuyến đường cần bảo vệ:
@app.get("/users/me")
async def read_users_me(current_user: dict = Depends(get_current_user)):
return current_user
Bước 6: Triển khai ứng dụng FastAPI
Khi bạn hoàn thành phát triển, bạn có thể cần triển khai ứng dụng lên máy chủ đám mây. Bạn có thể chọn sử dụng Docker để triển khai.
Tạo Dockerfile
Trong thư mục dự án, tạo một tệp có tên Dockerfile, nhập nội dung sau:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.8
COPY ./app /app
Xây dựng hình ảnh Docker
Trong terminal của bạn, sử dụng lệnh sau để xây dựng hình ảnh Docker:
docker build -t myfastapiapp .
Chạy container Docker
Chạy ứng dụng FastAPI của bạn:
docker run -d --name fastapi -p 80:80 myfastapiapp
Tóm tắt
Trong bài viết này, chúng tôi đã giải thích chi tiết cách sử dụng FastAPI để xây dựng dịch vụ API hiệu suất cao, từ chuẩn bị môi trường đến tạo API cơ bản, định nghĩa tuyến đường và mô hình dữ liệu, cho đến việc thêm xác thực và triển khai. FastAPI cung cấp nhiều tính năng mạnh mẽ, giúp việc xây dựng API hiện đại trở nên đơn giản và hiệu quả, bạn có thể khám phá thêm nhiều tính năng và đặc điểm khác qua tài liệu chính thức. Hy vọng bài viết này sẽ giúp bạn nhanh chóng làm quen với FastAPI, nâng cao hiệu suất phát triển dự án của bạn!





