main.py,项目入口tests,保存所有测试用例,和api模块对应schemas,保存所有pydantic模型base.py,自定义的BaseModel,方便全局进行模型定制- 其它schema文件,和api模块对应
db,数据库相关base.py,数据engine和Base模型类models,保存所有模型类crud,数据库增删改查操作
core,核心文件config.py,项目配置dependencies.py,fastapi全局依赖exceptions.py,自定义异常utils.py,工具函数
apis,所有接口v1,每个版本一个文件夹,保存所有api模块base.py,路由注册
- schema模型字段注释统一使用
Constrained Types进行约束,右侧使用Field定制openAPI文档。 - 内部抛出的异常统一使用自定义的
HTTPException,并传入reason关键字参数,表明错误原因,方便前端统一处理。 - 为了区分pydantic模型和sqlalchemy模型,pydantic模型类统一使用
[名词][用途动词][Sche后缀]为类名,如UserRegisterSche,小写加下划线为变量名,如user_register_sche,sqlalchemy仅使用名词为类名,而在路径函数中,变量名统一加_db后缀。 - 原则上数据库的
crud操作不对返回对象为空进行判断,统一在路径函数中进行判断处理。 - 有返回的依赖函数统一使用名词做为函数名,如
current_user,无返回的依赖函数统一使用动词做为函数名,如check_permission。