Skip to content

FastAPI 完整实践:有上限的 SQLite 费用账本 · 项目目标与边界至先读静态设计契约 ​

返回分篇目录

前置:契约、依赖生命周期。完整工程位于 examples/python/p2-fastapi。示例未执行、测试未执行、依赖未安装;本页只提供完整源码、预期规格和静态检查范围。没有启动ASGI服务、访问API或调用TestClient,也没有把设计OpenAPI冒充运行结果。

FastAPI 完整实践:有上限的 SQLite 费用账本 ​

前置:契约、依赖生命周期。完整工程位于 examples/python/p2-fastapi。示例未执行、测试未执行、依赖未安装;本页只提供完整源码、预期规格和静态检查范围。没有启动ASGI服务、访问API或调用TestClient,也没有把设计OpenAPI冒充运行结果。

项目目标与边界 ​

FastAPI费用账本项目实现了哪些边界?四个操作提供新增、列表、读取和删除;最多100条记录,整数分金额保证本例计算不会引入浮点误差。reference唯一用于识别重复提交,冲突返回409;它不是完整的幂等协议,因为重复请求不返回原先成功结果,也不比较新旧payload是否相同。

列表按id升序、返回完整数组,100条上限让本例无需分页;每条字段长度仍有明确限制。删除成功返回204空body,删除不存在id得404,参数类型/范围错误得422。新增body只允许reference/category/cents,响应包含服务器分配id。该API只用于本机学习,没有用户、授权、多租户或审计;本例单币种分单位和单一API写入者是假设,不能直接承担真实账务工作。

先读静态设计契约 ​

FastAPI项目为什么先保存静态契约?手写openapi.json先固定请求schema、成功状态与错误形状,再据此实现路由;它让代码评审有可比较的目标。此文件不执行应用,不证明运行时schema一致,实际 /openapi.json 对齐仍待读者执行验证。

openapi.json(完整设计契约)

完整文件:openapi.json 完整源码。保留原始内容,使用前请核对本文的版本与环境说明。

项目没有Postman绑定、云端mock或外部API依赖;契约可本地阅读,未安装或调用Postman CLI。所有数据库语句使用参数占位符,不能把reference拼接进SQL。输入验证与参数化SQL各自负责不同边界,不能互相替代。

继续阅读