Chào mọi người, hôm nay mình muốn ngồi xòe cái máy tính ra mà "tán gẫu" một chút về hành trình chuyển dịch từ Django sang FastAPI của mình trong năm ngoái. Thú thật là lúc mới bắt đầu học Python, mình chỉ biết viết những script nhỏ lẻ để tự động hóa việc backup file hay parse log, cảm giác rất "đam mê" nhưng cũng rất "ngáo ngáo".
Rồi dần dần, nhu cầu làm API cho dự án thực tế tăng lên, mình lao vào con đường Django. Ổn là ổn, "bàn giao trọn gói" (batteries included), ORM xịn sò, admin panel đẹp như mơ. Nhưng mà... nặng! Quá nặng! Mỗi lần deploy, phải chờ cả đám container load lên, mà code thì như một cái bãi rác khổng lồ, ai nhìn vào cũng muốn xỉu.
Điểm mình thấy "sướng" nhất khi chuyển sang FastAPI chính là tốc độ và sự đơn giản. Không còn phải khai báo rườm rà như Django, chỉ cần vài dòng là có một endpoint chạy ngon trớn. Đặc biệt là tính năng tự động tạo tài liệu Swagger UI, tiện lợi đến mức mình không bao giờ muốn quay lại viết tài liệu thủ công nữa.
Nói về chuyện viết code, mình thích cái phong cách "type hint" của FastAPI. Nó giúp mình phát hiện lỗi ngay từ khi viết code (static typing), thay vì phải chạy lên server rồi mới thấy lỗi runtime. Một ví dụ nhỏ mình hay dùng để check input:
from fastapi import FastAPI, Body
from pydantic import BaseModel
app = FastAPI()
class UserCreate(BaseModel):
username: str
age: int
@app.post("/users")
def create_user(user: UserCreate):
return {"message": f"User {user.username} created", "age": user.age}
Thấy không? Ngắn gọn, dễ hiểu, và tự động validate luôn. Nếu ai gửi age là string "hai mươi lăm" thì FastAPI sẽ báo lỗi ngay lập tức, không cần mình viết thêm logic kiểm tra thủ công.
Tuy nhiên, mình cũng không phủ nhận sức mạnh của Django. Nếu làm project cần admin phức tạp, cần tích hợp sẵn nhiều thứ như authentication, ORM, hay Celery ngay từ đầu thì Django vẫn là "ông vua". Còn nếu làm microservices, API nhanh, nhẹ, hoặc cần tốc độ phản hồi cao (real-time) thì FastAPI (hoặc Flask cho những project nhỏ xíu) là lựa chọn không thể bàn cãi.
Đôi khi mình cũng thấy buồn cười khi debug code Python, nhất là khi gặp lỗi IndentationError hay là vấn đề về scope biến trong script chạy qua bash. Nhưng chính những lúc "đau đầu" đó lại khiến mình trưởng thành hơn. Nghề dev không chỉ là code cho chạy, mà là chọn công cụ phù hợp nhất cho bài toán của mình thôi mà.
Các bạn đang dùng framework nào? Có ai đang "lên đời" từ Django sang FastAPI không? Chia sẻ chút cảm nhận nào, mình muốn đọc!