所有项目基础模块 / FastAPI 验证码服务

FastAPI 验证码服务把接口、业务和数据分开。

stu_fastapi 的邮件验证码模块。Controller / Service / DAO 分层,MySQL 查用户,SMTP 发 4 位验证码,Redis 存 60 秒后过期。同一套分层后来接到医疗系统的登录、注册和 JWT 鉴权里。

FastAPIMySQLRedisSMTP
FASTAPI / LAYERED SERVICE
ControllerServiceDAO · MySQL / Redis

它在解决什么

stu_fastapi 练的是后端最常见的一件小事:给邮箱发验证码,并在短时间内校验。它把接口、业务和数据访问分开,后面医疗系统的登录、注册和 JWT 鉴权,用的是同一套分层。

已经能跑的接口

接口 路径 行为
发送验证码 GET /users/sendEmail 生成 4 位数字,SMTP 发出去,Redis 按邮箱存 60 秒
校验验证码 GET /users/verifyEmail 从 Redis 取出比对,成功后删除 key

请求进 UsersController,业务在 UsersService,查邮箱是否存在走 UsersDao + MySQL,验证码只进 Redis。配置用 .env,LLM 加载模块当时已经放进 ai/,但验证码这条链路并不依赖模型。

为什么值得单独留下

分层看起来无聊,接上完整系统之后才知道它省事:Controller 不关心 Redis 怎么过期,Service 不关心 SQL 怎么写,DAO 不关心邮件正文。医疗仓库里的 auth / user 模块,就是在这套 Controller → Service → DAO 上继续长出来的。

当时还没做完注册、登录和重置密码的完整接口,Pydantic 实体也不齐。这些在 medical_disease_db 里才补上:密码哈希、JWT、角色权限、Redis 黑名单。

和后面怎么接

MediAtlas 的账户体系仍然是这套骨架。验证码只解决“这封邮件现在是你的”;医疗问答另外还要会话隔离、轨迹落库和访客过期。接口练习到此为止,领域规则要放到更上面那一层。

MUSIC

播放器由 QQ 音乐提供 · 打开歌曲 ↗ · 点封面播放导入的歌单

MY MUSIC

我的歌单

赛丽亚的旅馆(ACT.5-大转移前) - gate new

打开原歌单

正在准备搜索索引…

选择Enter 打开Esc 关闭