Skip to main content

FastAPI - Framework Python Hiện Đại Cho API Development

· 3 min read

FastAPI Features

FastAPI là một framework web hiện đại, nhanh (high-performance) cho việc xây dựng API với Python 3.7+. Nó được xây dựng dựa trên các tiêu chuẩn Python type hints và cung cấp một cách tiếp cận hiện đại để phát triển API.

Tại Sao Chọn FastAPI?

1. Hiệu Suất Cao

FastAPI là một trong những framework Python nhanh nhất hiện nay:

  • Dựa trên Starlette và Pydantic
  • Hỗ trợ async/await
  • Hiệu suất tương đương với NodeJS và Go

2. Type Safety

FastAPI tận dụng Python type hints để:

  • Tự động validate dữ liệu
  • Tạo tài liệu API tự động
  • Phát hiện lỗi trong quá trình phát triển

3. Tài Liệu Tự Động

FastAPI tự động tạo tài liệu API:

  • Swagger UI (/docs)
  • ReDoc (/redoc)
  • OpenAPI specification

Cài Đặt và Bắt Đầu

1. Cài Đặt

pip install fastapi uvicorn

2. Tạo Ứng Dụng Đầu Tiên

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
return {"message": "Hello World"}

3. Chạy Server

uvicorn main:app --reload

Các Tính Năng Chính

1. Path Parameters

@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}

2. Query Parameters

@app.get("/items/")
async def read_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}

3. Request Body

from pydantic import BaseModel

class Item(BaseModel):
name: str
price: float
is_offer: bool = None

@app.post("/items/")
async def create_item(item: Item):
return item

4. Form Data

from fastapi import Form

@app.post("/login/")
async def login(username: str = Form(...), password: str = Form(...)):
return {"username": username}

Dependency Injection

FastAPI có hệ thống dependency injection mạnh mẽ:

from fastapi import Depends

async def common_parameters(q: str = None, skip: int = 0, limit: int = 100):
return {"q": q, "skip": skip, "limit": limit}

@app.get("/items/")
async def read_items(commons: dict = Depends(common_parameters)):
return commons

Bảo Mật

1. OAuth2 với JWT

from fastapi.security import OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

@app.get("/users/me")
async def read_users_me(token: str = Depends(oauth2_scheme)):
return {"token": token}

2. CORS

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

Testing

FastAPI hỗ trợ testing dễ dàng:

from fastapi.testclient import TestClient

client = TestClient(app)

def test_read_main():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"message": "Hello World"}

Deployment

1. Uvicorn

uvicorn main:app --host 0.0.0.0 --port 8000

2. Docker

FROM python:3.9
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./app /code/app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

Kết Luận

FastAPI là một framework hiện đại, mạnh mẽ và dễ sử dụng cho việc phát triển API với Python. Với hiệu suất cao, type safety và tài liệu tự động, FastAPI là lựa chọn tuyệt vời cho các dự án API hiện đại.

Nếu bạn đang tìm kiếm một framework Python hiện đại để xây dựng API, FastAPI chắc chắn là một lựa chọn đáng cân nhắc.