FastAPI - Python 现代 Web 框架
高性能 Python Web 框架,基于类型提示构建 API,与 NodeJS/Go 性能相当,被 Microsoft/Uber/Netflix 等大厂用于生产
GitHub: fastapi/fastapi (97,241 stars)
2026年4月15日
pythonapirest
什么是 FastAPI?
FastAPI 是一个现代、快速的 Python Web 框架,基于标准 Python 类型提示构建 API。Star 接近 10 万,是 Python 生态最热门的 API 框架。
核心特点:
- 高性能:与 NodeJS 和 Go 相当(基于 Starlette + Pydantic)
- 开发速度快:提升约 200%-300% 的功能开发速度
- 更少 bug:减少约 40% 的人为错误
- 自动交互文档:生产级代码,即时文档
被 Microsoft、Uber、Netflix 等大厂用于生产环境。
安装
pip install "fastapi[standard]"
第一个应用
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
启动:
fastapi dev # 开发模式(自动重载)
fastapi run # 生产模式
访问 http://127.0.0.1:8000/docs 查看自动生成的交互文档。
请求参数与类型验证
路径参数
@app.get("/items/{item_id}")
def read_item(item_id: int):
return {"item_id": item_id}
请求体
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
price: float
tags: list[str] = []
@app.post("/items/")
def create_item(item: Item):
return item
依赖注入
from fastapi import Depends
def get_db():
db = connect_to_db()
try:
yield db
finally:
db.close()
@app.get("/items/")
def list_items(db=Depends(get_db)):
return db.query(Item).all()
异步支持
@app.get("/async")
async def async_view():
result = await some_async_operation()
return result
数据库集成
from sqlalchemy.orm import Session
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.post("/items/", response_model=ItemOut)
def create_item(item: Item, db: Session = Depends(get_db)):
db_item = ItemModel(**item.model_dump())
db.add(db_item)
db.commit()
return db_item
最佳实践
- 使用 Pydantic BaseModel:所有请求体和响应模型都用 Pydantic
- 异步优先:使用
async def获得最佳性能 - 依赖注入做数据库连接:每个请求创建新的 DB session
- 使用
response_model:明确指定返回数据结构,过滤敏感字段
参考
- GitHub: fastapi/fastapi
- 官方文档: https://fastapi.tiangolo.com