forked from Kexing/AI4SE_Practices
3.5 KiB
3.5 KiB
Task 1: RESTful API开发(基础任务)
任务描述
使用Python + FastAPI开发一个用户管理系统的RESTful API,包含以下功能:
-
用户注册接口 (
POST /api/users/register)- 接收用户名、邮箱、密码
- 验证输入格式(邮箱格式、密码强度)
- 检查用户名和邮箱是否已存在
- 返回用户信息(不含密码)
-
用户登录接口 (
POST /api/users/login)- 接收用户名/邮箱和密码
- 验证用户凭证
- 返回JWT Token
-
用户查询接口 (
GET /api/users/{user_id})- 需要JWT认证
- 返回指定用户的公开信息
技术要求
- 使用FastAPI框架
- 实现数据校验(Pydantic模型)
- 实现错误处理(统一的错误响应格式)
- 使用SQLite数据库存储用户数据
- 实现密码加密(bcrypt)
- 实现JWT认证
- 代码符合PEP8规范
- 提供API文档(FastAPI自动生成)
初始条件
- 初始代码状态:无,从零开始
- 项目类型:Python Web API项目
- 框架:FastAPI 0.103.1+
- Python版本:3.10+
- 数据库:SQLite(无需额外配置)
验收标准
功能验收
- 用户注册接口功能完整,数据校验正确
- 用户登录接口功能完整,认证正确
- 用户查询接口功能完整,权限验证正确
- 密码加密存储,未明文保存
- JWT Token生成和验证正确
- 错误处理统一,返回格式规范
代码质量
- 代码符合PEP8规范
- 代码结构清晰,函数职责单一
- 注释充分,关键逻辑有说明
- 无明显的安全漏洞
测试验收
- 使用Postman或curl可以成功调用所有接口
- 所有接口的边界条件处理正确(如:重复注册、错误密码、无效Token等)
- 错误响应格式统一且信息明确
测试步骤
-
创建项目结构
- 创建Python虚拟环境
- 安装依赖(FastAPI、uvicorn、pydantic、bcrypt、python-jose等)
- 创建项目目录结构
-
开发API接口
- 使用工具生成/辅助编写代码
- 记录工具生成的代码
- 记录人工修改的点和原因
-
测试验证
- 使用Postman测试所有接口
- 验证功能正确性
- 记录测试结果
评估要点
代码生成质量
- 完整性:是否生成了所有必需的接口和功能
- 正确性:生成的代码是否能直接运行,是否需要大量修改
- 规范性:代码是否符合PEP8和FastAPI最佳实践
- 安全性:是否正确实现密码加密和JWT认证
工具使用体验
- 响应速度:工具生成代码的速度
- 交互便利性:需要多少次交互才能生成完整功能
- 错误处理:工具是否能处理边界情况和错误场景
示例代码结构
期望生成的项目结构:
user-api/
├── main.py # FastAPI应用入口
├── models.py # Pydantic数据模型
├── database.py # 数据库配置和连接
├── auth.py # JWT认证逻辑
├── routers/
│ └── users.py # 用户相关路由
├── requirements.txt # 依赖清单
└── README.md # 项目说明
参考示例
依赖清单示例
fastapi==0.103.1
uvicorn[standard]==0.24.0
pydantic==2.4.2
pydantic[email]==2.4.2
bcrypt==4.0.1
python-jose[cryptography]==3.3.0
sqlalchemy==2.0.23
注意:这是一个基础任务,所有工具都必须完成此任务的测试。测试结果将作为对比评估的重要依据。