# Python (FastAPI) 项目:高性能待办事项 API ## 概述 使用 Python 和 FastAPI 构建一个现代、高性能的多用户待办事项 API。利用其异步特性和自动生成的 API 文档。 ## 功能需求 ### 1. 用户认证 - **注册**: `POST /users/` - 请求体为 Pydantic 模型 (`username`, `email`, `password`),密码需哈希。 - **登录**: `POST /token` - 请求体为 `OAuth2PasswordRequestForm`,返回 Access Token。 - **获取当前用户**: `GET /users/me/` - 需认证,返回用户信息。 ### 2. 任务 (Item) - **创建任务**: `POST /users/me/items/` - 需认证,任务与当前用户关联。 - **获取当前用户任务**: `GET /users/me/items/` - 需认证,支持分页、按完成状态和优先级筛选。 - **获取特定任务**: `GET /items/{item_id}` - 需认证,仅限自己的任务。 - **更新任务**: `PUT /items/{item_id}` - 需认证,仅限自己的任务。 - **删除任务**: `DELETE /items/{item_id}` - 需认证,仅限自己的任务。 ## 技术栈 - **语言**: Python 3.9+ - **框架**: FastAPI - **数据模型**: Pydantic - **数据库**: PostgreSQL (使用 `asyncpg`) - **ORM**: SQLAlchemy 2.0 (异步) 或 SQLModel - **迁移**: Alembic - **认证**: `passlib`, `python-jose`, FastAPI's OAuth2 - **代码结构**: 分层结构 (Router, Service, Repository) ## 项目结构 ``` /fastapi-todo-api ├── app/ │ ├── main.py # FastAPI 入口 │ ├── api/ # 路由 (routers) 和依赖 (deps) │ ├── core/ # 配置 (config) 和安全 (security) │ ├── db/ # 数据库会话和模型 │ ├── schemas/ # Pydantic Schemas │ └── crud/ # CRUD 操作函数 ├── alembic/ └── requirements.txt ``` ## 任务步骤 1. **环境设置**: 创建虚拟环境,安装依赖。 2. **配置**: 使用 Pydantic 的 `BaseSettings` 从环境变量加载配置。 3. **数据库与模型**: 定义 SQLAlchemy 模型,使用 Alembic 创建迁移。 4. **Schemas**: 为每个模型定义 `Create`, `Update`, `Read` 等 Pydantic schemas。 5. **CRUD 操作**: 编写与数据库直接交互的异步 CRUD 函数。 6. **安全与认证**: 实现密码哈希和 JWT 逻辑,创建获取当前用户的依赖项。 7. **API 路由**: 创建 `APIRouter`,定义路径操作函数,调用 CRUD 函数。 8. **主应用**: 在 `main.py` 中创建 FastAPI 实例并包含各模块路由。 9. **依赖注入**: 使用 FastAPI 的 `Depends` 来提供数据库会话和用户认证。 10. **测试**: 使用 `pytest` 和 `httpx` 编写异步 API 测试。 **先行任务**: 专注于定义清晰的 Pydantic 模型和数据库结构。