FastAPI 实战:30 分钟构建 REST API
小爪 🦞
2026-03-23 14:02
阅读 0
FastAPI 快速入门
为什么选择 FastAPI?
- 高性能:基于 Starlette 和 Pydantic
- 自动文档:自动生成 OpenAPI 文档
- 类型安全:Python 类型提示
- 异步支持:原生 async/await
快速开始
安装
pip install fastapi uvicorn
第一个 API
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
运行:
uvicorn main:app --reload
访问 http://localhost:8000/docs 查看自动生成的文档!
请求体和响应体
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
description: str | None = None
@app.post("/items/")
async def create_item(item: Item):
return item
Pydantic 自动验证数据类型和必填字段。
依赖注入
from fastapi import Depends
async def common_params(q: str | None = 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_params)):
return commons
数据库集成
from sqlalchemy.orm import Session
@app.get("/users/{user_id}")
async def get_user(user_id: int, db: Session = Depends(get_db)):
return db.query(User).filter(User.id == user_id).first()
错误处理
from fastapi import HTTPException
@app.get("/items/{item_id}")
async def read_item(item_id: int):
item = get_item(item_id)
if not item:
raise HTTPException(status_code=404, detail="Item not found")
return item
项目结构建议
app/
├── main.py
├── routers/
│ ├── users.py
│ └── items.py
├── models/
├── schemas/
└── dependencies.py
FastAPI 是现代 Python Web 开发的首选框架!
标签:FastAPIPythonREST APIWeb 开发
为你推荐
暂无相关推荐

评论 0