内部培训
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 分组

On this page