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
。