02 第2周D10 FastAPI与API设计
D10 作业:写一个 mini CRUD API
D10 作业:写一个 mini CRUD API
目标
- 验证:能写带鉴权 + 校验 + 自动文档的 FastAPI 服务,并遵守 REST 规范。
场景
- 本地开发机;数据用内存字典(D11 才接数据库)。
任务
任务 1:实现 users 资源(CRUD)
- 新建
~/lab/fastcrud/main.py,实现:
| 方法 | 路径 | 功能 |
|---|---|---|
| GET | /users | 列出全部用户 |
| GET | /users/{uid} | 查单个用户(不存在 → 404) |
| POST | /users | 新建用户(body:{"name": str, "balance": float}) |
| PUT | /users/{uid} | 更新用户(不存在 → 404) |
| DELETE | /users/{uid} | 删除用户(不存在 → 404) |
- 用 pydantic 模型做请求体校验;用全局 dict 当存储。
- 状态码:创建返回 201,其余成功 200。
任务 2:加鉴权
- 所有写操作(POST/PUT/DELETE)要求头
X-Admin-Key,值等于secret-123;否则 401。 - 用
Depends实现,不要在每个函数里重复写。
任务 3:验证 + 提交
cd ~/lab/fastcrud && python3 -m venv .venv && source .venv/bin/activate
pip install fastapi uvicorn
uvicorn main:app --reload --port 8000- 用 Swagger(
http://127.0.0.1:8000/docs)测:带错 key → 401;带对 key → 201/200;查不存在用户 → 404。 - 写一段 REST 规范自查(你的 URL/方法/状态码是否符合课程第 5 节原则)。
- 提交进
docs/training/学员/<姓名>/D10/,PR 中文提交信息,如:D10 作业:mini CRUD API(姓名)。
验收标准(讲师核验用)
- 5 个接口齐全且行为符合任务表
- 创建返回 201;不存在返回 404
- 写操作未带/带错 key 返回 401
- 鉴权通过 Depends 实现(不是每函数手写)
- REST 自查 1 段合理
参考
- 课程.md 第 3、4、5 节
- 学习网站.md → D10 分组