这是一个 FastAPI 模板项目
- 兼容性保障: 3.10 <= Python <= 3.12
- 也许可以运行?: 3.9 <= Python < 3.10
- 未经测试: 3 <= Python < 3.9
- 别想了跑不起来: 2 <= Python < 3
使用本模板视为已有 Python 基础, Git 基础 和 命令行操作 基础
-
使用
git clone
本项目 或 在页面右上角Use this template > Create a new repository
git clone https://github.com/Lovemilk-Team/fastapi-template.git
-
修改
module_name
文件夹名称 和run.py
内的MODULE_NAME
常量为 你项目的包名 (遵循 Python 包命名规则) -
按照
config.py
内各字段描述 (没有描述的参照给出链接内的文档) 修改各配置项的默认值, 或创建[dev.|prod.]config.y[a]ml
按照 YAML 的对象格式 (键值对) 覆盖配置
注意: 配置文件优先级为dev.config
>prod.config
>config
, 后缀名优先级为.yml
>.yaml
>.json
越优先的配置的会覆盖不优先的配置
JSON 文件仍然将使用 YAML 加载器加载, 若需要在文件内注释请使用#
以dev.
开头的 配置文件 仅当环境变量MILK_DEVMODE
为1
时生效 -
更改工作路径到项目目录
cd fastapi-template/
-
创建虚拟环境并安装依赖
- *nix
python3 -m venv ./venv source ./venv/bin/activate pip3 install -r requirements.txt
- Windows
py -3 -m venv ./venv ./venv/Scripts/activate pip install -r requirements.txt
- *nix
-
运行
run.py
python run.py
要修改服务器的 host, port 配置, 请参见配置项
app.host
和app.port
, 默认使用127.0.0.1
和8000
相对引入和绝对引入 "同一class" 不相等, 涉及导入本地模块请使用相对导入 (以
.
开头)
服务器会在每次运行时 (除环境变量MILK_DEVMODE
为1
时外, 若已有生成文件则不会更新) 生成一个已合并的完整配置位于merged.config.yml
(部分字段由 Pydantic 处理生成为了 ISO 标准的字段)
- 我们为您的服务器提供了一个统一的
BaseResponse
和ServerException
, 对于任何响应与异常, 请继承它们 - 对于
Rate Limit
的支持 (参见配置项service.rate_limit
) - 我们为您提供了一个 loguru 的 logger (位于
log.py
的logger
对象), 如需输出日志请使用该 logger
日志输出位于logs/<YYYY>-<MM>-<DD>.log
- 我们为您提供了一个统一的路由, 请在
routers/
下创建 py 文件并导出一个名为router
的fastapi.APIRouter
对象 (不导出则不会自动添加), 初始化时会自动导入并添加至 app/
- 我们为您提供了一个统一的
database
初始化, 若需使用 database 的 session, 请使用.database.dbsession_depend
的 FastAPI Depends
同时, 推荐在.database.structs
定义 Model 和 Scheme, 若须在其他文件内定义必须在database/__init__.py
中的engine = connect2database()
行前导入