fastapi-builder icon indicating copy to clipboard operation
fastapi-builder copied to clipboard

🚀 这是一个用于快速构建 fastapi 项目基础框架的工具,您可以直接在上面着手开发您的 fastapi 项目.

「 FastAPI Builder 」


💡 fastapi 项目构建器. 一款帮助你快速构建 fastapi 项目的工具.

  fastapi-builder 是一个基于 FastAPI 框架的快速 Web 应用程序开发的工具箱。它提供了一组现成的工具和组件,可以帮助你快速构建具有良好结构和可维护性的 FastAPI Web 应用程序。其目的是提供一个一站式的解决方案,以加速快速原型开发和生产部署。

  • 特性

  • TODO

  • 快速开始

  • 项目结构

  • 特别感谢

  • 许可证


💬 特性

  • 参考 Django 化项目基础命令.

  • 创建可自定义的 project 项目.

  • 创建可定制的 app 应用.

  • 为您生成完整的项目结构.

  • 对数据库操作进行封装,便于轻松管理.

  • 支持数据库包括 Mysql.

  • 可选的配置如: Dockerfile、pre-commit.

  • 对虚拟环境进行管理.


🎯 TODO

PS: 期待您对本项目做出贡献...
  • [ ] 持续完善项目框架代码部分

  • [ ] 持续完善项目框架文档部分

  • [x] 优化 requirements.txt

  • [x] 提供英文版本

  • [ ] 提供项目数据库 PostgreSQL 选项

  • [x] 提供完整的 run 方法

  • [x] 内置 alembic 数据迁移等管理

  • [x] 提供对运行环境的检查

  • [x] 提供 fastapi venv 命令,创建/开启/关闭虚拟环境

  • [x] 针对 Linux 环境提供支持

  • [x] 针对 Mac 环境提供支持

  • [x] 生成 app 时,自动注入到 project 中(路由管理分配)


🚀 快速开始

=> 依赖:Python 3.6+
=> 详细教程:tutorial

安装 fastapi-builder 项目:

pip install fastapi-builder

查看项目版本:

fastapi --version

项目帮助:

fastapi --help
fastapi startproject --help

创建 fastapi 项目:

fastapi startproject [name]

# or 带有交互选择

fastapi startproject [name] --interactive

创建 fastapi 应用:

fastapi startapp [name]

运行 fastapi 项目:

fastapi run

通过访问 http://127.0.0.1:8000/docs 以确保 fastapi 服务正常运行.


📁 项目结构

.
├── alembic/                      - 数据库迁移工具
├── api/                          - web 相关(路由、认证、请求、响应).
│   ├── errors/                   - 定义错误处理方法.
│   │   ├── http_error.py         - http 错误处理方法
│   │   │── validation_error.py   - 验证错误处理方法
│   ├── routes/                   - web routes 路由.
│   │   ├── api.py                - 总路由接口
│   │   └── authentication.py     - 认证相关(登录、注册)路由
├── app_user/                     - user 应用.
│   ├── api.py                    - 提供 user 接口方法
│   ├── model.py                  - 提供 user 表模型
│   ├── schema.py                 - 提供 user 结构模型
├── core/                         - 项目核心配置, 如: 配置文件, 事件句柄, 日志.
│   ├── .env                      - 配置文件.
│   ├── config.py                 - 解析配置文件, 用于其他文件读取配置.
│   ├── events.py                 - 定义 fastapi 事件句柄.
│   ├── logger.py                 - 定义项目日志方法.
├── db/                           - 数据库相关.
│   ├── base.py                   - 导入所有应用 model.
│   └── database.py               - sqlalchemy 方法应用.
│   ├── errors.py                 - 数据库相关错误异常.
│   ├── events.py                 - 数据库相关事件句柄.
├── lib/                          - 自定义库
│   ├── jwt.py                    - 用户认证 jwt 方法.
│   ├── security.py               - 加密相关方法.
├── logs/                         - 日志文件目录.
├── middleware/                   - 项目中间件.
│   ├── logger.py                 - 请求日志处理.
├── models/                       - sqlalchemy 基础模型相关
│   ├── base.py                   - sqlalchemy declarative Base 表模型.
│   └── mixins.py                 - mixin 抽象模型定义.
├── schemas/                      - pydantic 结构模型相关.
│   ├── auth.py                   - 用户认证相关结构模型.
│   └── base.py                   - pydantic 结构模型基础类.
│   ├── jwt.py                    - jwt 相关结构模型.
├── utils/                        - 工具类.
│   ├── consts.py                 - 项目常量定义.
│   ├── dbmanager.py              - 数据库管理服务.
│   ├── docs.py                   - fastapi docs 文档自定义.
├── .pre-commit-config.yaml       - pre-commit 配置文件.
├── alembic.ini                   - alembic 数据库迁移工具配置文件.
├── docker-compose.yaml           - docker 配置.
├── Dockerfile                    - dockfile 文件.
├── .fastapi-builder.ini          - fastapi-builder 配置文件.
├── LICENSE                       - 许可证信息.
├── main.py                       - fastapi application 创建和配置.
├── pyproject.toml                - poetry 需求模块信息.
├── README.md                     - 项目说明文档.
├── requirements.txt              - pip 需求模块信息.
└── setup.cfg                     - pre-commit 配置文件.

⚡ 特别感谢

项目配置生成及 questionary 内容基于项目:https://github.com/ycd/manage-fastapi

fastapi 项目基础框架参考:https://github.com/nsidnev/fastapi-realworld-example-app/


🚩 许可证

项目根据麻省理工学院的许可条款授权.