# FastAPI-Base **Repository Path**: fxh/fast-api-base ## Basic Information - **Project Name**: FastAPI-Base - **Description**: 这是一个Python FastAPI项目模板工程,包含DB、Redis、MongoDB、JSON等工具和基础服务类。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 33 - **Created**: 2025-06-10 - **Last Updated**: 2025-06-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FastAPI Base 这是一个 FastAPI模板工程。 [Github: FastAPI Demo](https://github.com/zhenqiang-sun/fastapi_demo/) https://github.com/zhenqiang-sun/fastapi_demo/ ## 环境组件 ### 版本: Python 3.8 ### 组件: - FastAPI: https://fastapi.tiangolo.com/ - uvicorn: https://www.uvicorn.org/ - SQLAlchemy: https://www.sqlalchemy.org/ - PyMySQL: https://pymysql.readthedocs.io/ - REDIS: https://github.com/andymccurdy/redis-py - PyMongo: https://github.com/mongodb/mongo-python-driver ## 项目结构 ``` ├─app # 项目代码目录 │ ├─config # 配置文件目录 │ │ ├─anonymous.py # 可匿名访问接口配置文件 │ │ ├─db.py # 数据库连接配置文件,关系数据库,如mysql │ │ ├─fastapi.py # FastAPI项目配置文件 │ │ ├─mongo.py # mongo数据库连接配置文件 │ │ └─redis.py # redis连接配置文件 │ ├─controller # 控制器层,API入口 │ ├─dao # DAO层,数据访问对象 │ ├─model # Model层,数据表对象 │ ├─schema # Schema层,数据结构验证层,对API出入参数的校验、过滤、转换 │ ├─service # Service层,业务逻辑处理层 │ ├─sql # 原生SQL文件目录,复杂的SQL语句单独存放这里 │ ├─templates # 模板目录,如html、excel、email等模板文件 │ ├─temporary # 临时文件目录,运行过程中生成的临时文件存放 │ └─utils # 工具箱 ├─docker # 项目docker运行脚步目录 │ ├─deploy.sh # shell部署脚本 │ ├─deocker-compose.yml # deocker-compose部署脚本 │ └─run.sh # docker内运行项目脚本,采用uvicorn ├─res # 项目静态资源目录,如附件、图片、视频等文件 ├─venv # python 虚拟环境目录 ├─dev_run.py # 开发模式运行项目 └─dev_db_2_model.py # 根据已有数据库表生成 ORM 使用的 model.py ├─dev_model_2_db.py # 根据已有 ORM 使用的 model.py 生成数据库表 └─dev_generate_model.py # 基于Demo代码生成新的模块,省去复制粘贴 ``` ## 开发运行 ```bash # 初始化venv: virtualenv venv # 如提示找不到virtualenv,则先执行: sudo pip install -i https://mirrors.aliyun.com/pypi/simple/ virtualenv # 进入venv for Linux、Mac: source venv/bin/activate # 进入venv for Windows venv\Scripts\activate.bat # 安装依赖环境: pip install -i https://mirrors.aliyun.com/pypi/simple/ -r requirements.txt # 开发运行 python dev_run.py # 根据已有数据库表生成 ORM 使用的 model.py python dev_db_2_model.py # 根据已有 ORM 使用的 model.py 生成数据库表 python dev_model_2_db.py # 基于Demo代码生成新的模块,省去复制粘贴 python dev_generate_model.py ``` ## 接口风格 采用RESTful风格,但有几点特殊 ### 接口风格特殊点 - 1、使用版本,且放置在前,如`/v1/**`。 - 2、使用POST方法获取列表,因为要传递过滤和搜索参数,所以POST更方便。 - 3、使用名字单数,一方面因为上一条,另一方面除了列表其实一直是对单条数据进行操作,所以使用单数。 - 4、基于上两条,所以获取列表的接口通常是名词后加list,如:/v1/category/list。 ### 接口风格举例 | 请求方法 | 路径 | 说明 | | ---- | ---- | ---- | | `POST` | /v1/category | 创建一个类别 | | `DELETE` | /v1/category/{id} | 删除一个类别 | | `PUT` | /v1/category/{id} | 修改一个类别 | | `GET` | /v1/category/{id} | 获取一个类别 | | `POST` | /v1/category/list | 获取类别列表 | ## 接口实例 ![avatar](res/demo_api_list.jpg) ## 快速开始 - 1、安装依赖: pip install -r requirements.txt - 2、修改数据库配置: app/config > - db.py: 业务数据(必须配置),mysql > - mongo.py: 日志数据(可选配置),关闭日志记录fastapi.py->FastapiConfig.request_log_to_mongo = False,则可不用配置 > - redis.py: 缓存数据(必须配置),