Hướng Dẫn Xây Dựng API Với FastAPI Trong Python

3 min read

Trong thế giới phát triển ứng dụng web hiện đại, API là nền tảng để kết nối các hệ thống với nhau – từ ứng dụng di động, trang web cho đến các dịch vụ AI hay IoT. Nếu bạn làm việc với Python, có một framework đang “làm mưa làm gió” vài năm trở lại đây nhờ hiệu năng vượt trội và cú pháp dễ dùng: đó chính là FastAPI.

Bài viết này sẽ hướng dẫn bạn toàn bộ quá trình xây dựng một RESTful API với FastAPI từ cơ bản đến nâng cao, đồng thời giải thích vì sao framework này lại được hàng triệu lập trình viên lựa chọn cho các dự án backend hiện đại.


1. FastAPI Là Gì?

FastAPI là một framework web hiện đại của Python dùng để xây dựng API nhanh chóng, an toàn và dễ mở rộng. Nó được phát triển dựa trên Starlette (xử lý web) và Pydantic (xử lý dữ liệu) – hai thư viện mạnh mẽ trong hệ sinh thái Python.

Điểm nổi bật của FastAPI:

  • Hiệu năng cao, gần bằng Node.js và Go
  • Tự động sinh tài liệu API (Swagger / Redoc)
  • Kiểm tra và validate dữ liệu đầu vào tự động
  • Tích hợp dễ dàng với async/await cho xử lý bất đồng bộ
  • Cấu trúc rõ ràng, dễ bảo trì, dễ mở rộng

Nếu bạn đã từng dùng Flask hay Django REST Framework, FastAPI có thể khiến bạn bất ngờ về tốc độ phát triển và hiệu suất khi chạy thực tế.


2. Cài Đặt FastAPI Và Uvicorn

Bắt đầu với một môi trường Python 3.8+ và cài đặt như sau:

pip install fastapi uvicorn
  • fastapi: framework chính để xây dựng API
  • uvicorn: ASGI server dùng để chạy ứng dụng

3. Tạo API Cơ Bản Với FastAPI

Hãy bắt đầu với ví dụ đơn giản – một API trả về thông tin “Hello World”:

# main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

Chạy ứng dụng:

uvicorn main:app --reload

Truy cập: http://localhost:8000
Bạn sẽ thấy kết quả:

{"message": "Hello, FastAPI!"}

4. Định Nghĩa Endpoint Với Tham Số

FastAPI hỗ trợ định nghĩa tham số cực kỳ dễ dàng. Ví dụ, tạo một endpoint chào người dùng:

@app.get("/hello/{name}")
def say_hello(name: str):
    return {"message": f"Hello, {name}!"}

Truy cập:
http://localhost:8000/hello/Quan
Kết quả:

{"message": "Hello, Quan!"}

5. Làm Việc Với Body Request Và Model Dữ Liệu

FastAPI tích hợp Pydantic để định nghĩa cấu trúc dữ liệu đầu vào. Điều này giúp bạn validate dữ liệu dễ dàng và tránh lỗi runtime.

from pydantic import BaseModel

class User(BaseModel):
    name: str
    age: int

@app.post("/users/")
def create_user(user: User):
    return {"name": user.name, "age": user.age}

Gửi POST request với JSON:

{
  "name": "Alice",
  "age": 25
}

Kết quả:

{"name": "Alice", "age": 25}

6. Tự Động Sinh Tài Liệu API

Một điểm nổi bật của FastAPI là Swagger UI được tạo tự động.
Chỉ cần chạy server và truy cập:

Bạn sẽ có một tài liệu API hoàn chỉnh, có thể test trực tiếp từ trình duyệt mà không cần viết thêm dòng code nào.


7. Xử Lý Bất Đồng Bộ (Async) Trong FastAPI

FastAPI hỗ trợ async/await giúp ứng dụng xử lý hàng nghìn request đồng thời mà không bị nghẽn I/O.

import asyncio

@app.get("/slow-task")
async def slow_task():
    await asyncio.sleep(3)
    return {"status": "done"}

API trên sẽ chạy bất đồng bộ và không chặn các request khác trong lúc chờ.


8. Cấu Trúc Dự Án Chuẩn Cho API Lớn

Khi ứng dụng mở rộng, bạn nên tổ chức project theo cấu trúc:

project/
├── main.py
├── routers/
│   ├── users.py
│   └── products.py
├── models/
│   └── user_model.py
└── services/
    └── database.py

Tách route, model, service sẽ giúp API dễ bảo trì, dễ mở rộng và chuẩn production hơn.


9. Tích Hợp FastAPI Với Cơ Sở Dữ Liệu

Bạn có thể kết nối FastAPI với nhiều hệ quản trị như PostgreSQL, MySQL hoặc MongoDB. Ví dụ nhanh với SQLAlchemy:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Kết hợp ORM giúp bạn thao tác với database như với object Python, tránh lỗi SQL injection và dễ bảo trì hơn.


10. Kết Luận

FastAPI là lựa chọn hoàn hảo nếu bạn muốn xây dựng API bằng Python với tốc độ phát triển nhanh, hiệu năng cao và tính ổn định lâu dài. Từ những ứng dụng nhỏ đến các dự án lớn về microservices, AI backend hay API nội bộ, FastAPI đều đáp ứng tốt.

Hơn nữa, nhờ cú pháp hiện đại và hỗ trợ async, bạn hoàn toàn có thể xây dựng các hệ thống realtime, AI inference API hay backend microservices một cách hiệu quả và dễ mở rộng.

Avatar photo

Leave a Reply

Your email address will not be published. Required fields are marked *