Quay lại danh sách bài viết
FastAPI - Framework Python Hiện Đại Cho API Development
30 tháng 11, 2025
•admin
# FastAPI - Framework Python Hiện Đại Cho API Development
<div className="search-container">
<input
type="text"
placeholder="Tìm kiếm trong bài viết..."
className="search-input"
onChange={(e) => {
const searchText = e.target.value.toLowerCase();
const content = document.querySelector('.markdown');
const text = content.textContent.toLowerCase();
if (text.includes(searchText)) {
const regex = new RegExp(searchText, 'gi');
content.innerHTML = content.innerHTML.replace(regex, match => `<mark>${match}</mark>`);
}
}}
/>
</div>

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
```bash
pip install fastapi uvicorn
```
### 2. Tạo Ứng Dụng Đầu Tiên
```python
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
```
### 3. Chạy Server
```bash
uvicorn main:app --reload
```
## Các Tính Năng Chính
### 1. Path Parameters
```python
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
```
### 2. Query Parameters
```python
@app.get("/items/")
async def read_items(skip: int = 0, limit: int = 10):
return {"skip": skip, "limit": limit}
```
### 3. Request Body
```python
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
```python
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ẽ:
```python
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
```python
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
```python
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:
```python
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
```bash
uvicorn main:app --host 0.0.0.0 --port 8000
```
### 2. Docker
```dockerfile
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.
fastapi
python
api
web-development
Chia sẻ:
Bài viết liên quan
Top 5 thư viện Python cần biết: Pandas, Numpy, Matplotlib, Yfinance, TA-Lib
Top 5 thư viện Python cần biết: Pandas, Numpy, Matplotlib, Yfinance, TA-Lib Python là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay, đặ...
SQLAlchemy với SQL Server
Cách sử dụng thư viện SQLAlchemy để thao tác cơ sở dữ liệu SQL Server  SQLAlchemy là một t...
Tìm Hiểu Về Tính Năng API Của Node.js và Supabase
Tìm Hiểu Về Tính Năng API Của Node.js và Supabase Node.js và Supabase là hai công nghệ mạnh mẽ trong việc xây dựng backend và API. Trong bài viết n...