name: fastapi-mastery description: 全面的FastAPI开发技能,涵盖REST API创建、路由、请求/响应处理、验证、身份验证、数据库集成、中间件和部署。适用于FastAPI项目、构建API、实现CRUD操作、设置身份验证/授权、集成数据库(SQL/NoSQL)、添加中间件、处理WebSocket或部署FastAPI应用程序。当涉及包含FastAPI代码的.py文件、API端点创建、Pydantic模型或FastAPI特定功能的请求时触发。
FastAPI精通
概述
使用FastAPI构建生产就绪的REST API,利用现代Python特性、自动验证、交互式文档和异步能力。
快速开始
创建一个基本的FastAPI应用程序:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
运行命令:
uvicorn main:app --reload
访问交互式文档: http://localhost:8000/docs
按复杂度等级划分的技能结构
本技能分为三个渐进级别:
初级 (references/01-beginner.md)
在以下情况下阅读:
- 首次设置FastAPI应用程序
- 基本路由和路径操作
- 请求参数(路径、查询、正文)
- Pydantic模型和验证
- 响应模型和状态码
- 基本错误处理
中级 (references/02-intermediate.md)
在实现以下功能时阅读:
- 身份验证和授权(JWT、OAuth2)
- 数据库集成(SQLAlchemy、异步数据库)
- 依赖注入系统
- 中间件和CORS
- 后台任务
- 文件上传和下载
高级 (references/03-advanced.md)
在构建以下功能时阅读:
- WebSocket连接
- 测试策略(pytest、TestClient)
- 性能优化
- 容器化和部署
- API版本控制
- 高级错误处理和日志记录
常见开发工作流
构建CRUD API
- 为请求/响应定义Pydantic模型
- 设置数据库模型(SQLAlchemy)
- 创建路径操作(GET、POST、PUT、DELETE)
- 添加验证和错误处理
- 如果需要,实现身份验证
- 添加测试
基本CRUD模式请参阅references/01-beginner.md,数据库集成请参阅references/02-intermediate.md。
添加身份验证
- 选择身份验证方法(JWT、OAuth2、API密钥)
- 设置安全依赖项
- 创建登录端点
- 使用依赖项保护路由
- 如果使用JWT,处理令牌刷新
完整的身份验证实现请参阅references/02-intermediate.md。
数据库集成
- 选择数据库(PostgreSQL、MySQL、MongoDB)
- 安装和配置ORM(SQLAlchemy、Tortoise、Motor)
- 定义数据库模型
- 设置数据库连接和会话管理
- 创建CRUD操作
- 添加迁移(Alembic)
数据库模式请参阅references/02-intermediate.md。
最佳实践
类型提示: 始终使用Python类型提示进行自动验证和文档生成。
from typing import Optional
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
description: Optional[str] = None
依赖注入: 使用FastAPI的依赖注入实现共享逻辑。
from fastapi import Depends
def get_current_user(token: str = Depends(oauth2_scheme)):
# 验证令牌并返回用户
return user
在有益时使用异步: 对I/O密集型操作(数据库、外部API)使用异步。
@app.get("/items/{item_id}")
async def read_item(item_id: int):
item = await database.fetch_one(query)
return item
响应模型: 始终定义响应模型以用于API文档和验证。
@app.get("/items/{item_id}", response_model=ItemResponse)
async def read_item(item_id: int):
return item
参考指南选择
根据您的任务选择合适的参考:
- 创建第一个API或基本端点? → references/01-beginner.md
- 添加身份验证、数据库或中间件? → references/02-intermediate.md
- WebSocket、测试或部署? → references/03-advanced.md
所有参考文件都包含全面的示例,可以独立阅读。