青戈AI小栈
会员限时8折

实战教程 / FastAPI + LangGraph 从零开发智能实验室预约系统 / 求职资源包

本篇目录

面试追问

免费试读

一个预约请求从页面到数据库,经过了哪些层?

30 秒回答:页面提交预约时,Axios 拦截器自动带上 Token。后端路由通过依赖注入拿到数据库会话和当前用户,Schema 校验参数类型,Service 校验开放时间、设备状态和时段冲突,通过后写库。该预约接口返回 code、message、data,前端拦截器按 code 判断成功或提示错误。

项目已实现:第 05 节的 get_db 用 yield 提供会话,并在 finally 中关闭;第 06 节的 get_current_user 解析 Token 并查询用户;第 07 节统一 Response 结构和全局异常处理;第 08 节封装 Axios 拦截器;第 18 节在 reservation_service.create_reservation 中集中预约校验。

追问:为什么要单独分一个 Service 层?

路由函数只负责接收参数、注入依赖和返回结果,业务规则放在 Service,便于复用和测试。这个项目里最直接的收益是 AI 预约工具 create_lab_reservation 直接调用同一个 create_reservation,表单和 AI 两个入口共用一套规则。如果规则写在路由里,AI 入口就要复制一份,两边很容易不一致。

追问:get_db 为什么用 yield,Session 能不能做成全局共享?

带 yield 的依赖会在请求处理完后继续执行 finally,保证每个请求用完就关闭会话。Session 不是线程安全的,也带有本次请求的事务状态,不能在多个请求之间共享。每个请求创建一个、用完关闭,是 FastAPI 配合同步 SQLAlchemy 的常规做法。

访问课程源码

此链接指向 GitHub 私有仓库。请登录已获授权的 GitHub 账号,并接受仓库邀请后访问;否则可能显示 404。

尚未获得权限?有效 VIP 会员可联系站长,提供 GitHub 用户名申请加入。

继续阅读完整内容

其余面试追问与问题复盘,仅限有效 VIP 会员查看。

开通会员,查看完整资源包已有会员?登录查看

设置你的昵称

在讨论中,使用你自己的名字。

2–12 个字符0 / 12