【FastAPI】小型项目的目录结构设计与命名规范

在使用 FastAPI 进行小型项目开发时,良好的目录结构与命名规范能让代码更易于维护和扩展。下面是一个适合小型项目的目录结构示例,以及相关的命名规范建议:

FastAPI 小型项目目录结构示例

project_name/
│
├── app/
│   ├── __init__.py            # 使 app 目录成为一个模块
│   ├── main.py                # FastAPI 应用入口
│   ├── api/                   # API 路由
│   │   ├── __init__.py
│   │   └── v1/                # 版本化 API
│   │       ├── __init__.py
│   │       ├── endpoints/     # 具体的 API 端点
│   │       │   ├── __init__.py
│   │       │   ├── user.py    # 示例:用户相关的 API
│   │       │   └── item.py    # 示例:物品相关的 API
│   │       └── dependencies.py # 依赖项管理
│   ├── core/                  # 核心功能
│   │   ├── __init__.py
│   │   └── config.py          # 配置文件
│   ├── models/                # 数据库模型
│   │   ├── __init__.py
│   │   └── user.py            # 示例:用户数据库模型
│   ├── crud/                  # 数据库操作
│   │   ├── __init__.py
│   │   └── user.py            # 示例:用户数据的增删改查
│   ├── schemas/               # 数据验证模型 (Pydantic 模型)
│   │   ├── __init__.py
│   │   └── user.py            # 示例:用户的数据模式
│   └── utils/                 # 辅助工具函数
│       ├── __init__.py
│       └── security.py        # 安全相关工具函数,如密码哈希
│
├── tests/                     # 单元测试
│   ├── __init__.py
│   └── test_user.py           # 示例:用户相关的测试
│
├── .env                       # 环境变量文件
├── requirements.txt           # 项目依赖
└── README.md                  # 项目说明文件

命名规范

  1. 模块与文件命名

    • 使用小写字母,单词之间用下划线分隔。例如:user.pyitem.py
    • 模块目录如 api/, models/, schemas/ 应清晰表明它们的职责。
  2. 类命名

    • 类名使用帕斯卡命名法(PascalCase)。例如:UserModel, ItemSchema
    • 数据库模型类名通常对应数据库表名。
  3. 函数与变量命名

    • 函数和变量使用蛇形命名法(snake_case)。例如:get_user, create_item
  4. 配置项命名

    • 配置项变量通常大写,多个单词用下划线分隔。例如:DATABASE_URL, SECRET_KEY
  5. API 路由

    • API 路由通常使用复数形式,表示资源集合。例如:/users/items

补充说明

  • 版本控制:在 api/v1/ 目录中实现 API 的版本化,方便后期扩展或更新 API 时保持向后兼容。
  • 依赖管理:将依赖项统一管理在 dependencies.py 中,方便集中注入依赖。

这种目录结构清晰、规范,适用于小型项目,并且可以轻松扩展到中大型项目。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
FastAPI 是一个高性能、易于学习、快速构建 Web API 的 Python 框架。FastAPI 是基于 Starlette 框架构建的,并且支持 Python 3.6+。FastAPI 的特点在于具有出色的性能和开发效率,同时提供了快速、易于使用的 API 构建工具。 使用 FastAPI 连接 MySQL 和 Redis 数据库非常简单。你可以使用异步库如 aiohttp 来连接 MySQL 和 Redis。具体来说,你可以使用 aiomysql 和 aioredis 库来连接 MySQL 和 Redis。下面是一个示例代码: ``` from fastapi import FastAPI import aiomysql import aioredis app = FastAPI() # Connect to MySQL async def get_mysql_conn(): conn = await aiomysql.connect( host="localhost", port=3306, user="root", password="password", db="test", autocommit=True, ) return conn # Connect to Redis async def get_redis_conn(): redis = await aioredis.create_redis_pool("redis://localhost") return redis @app.get("/") async def root(): # Get MySQL connection mysql_conn = await get_mysql_conn() # Get Redis connection redis_conn = await get_redis_conn() # Perform database operations here # Close database connections mysql_conn.close() redis_conn.close() return {"message": "Hello World"} ``` 在 FastAPI 中,你可以使用 Pydantic 模块定义请求和响应模型。同时,FastAPI 也支持使用依赖注入来管理数据库连接等资源。这样可以更加方便地编写可维护的代码。 FastAPI 的框架结构可以按照以下方式设计: 1. main.py:程序入口,包含 FastAPI 应用程序的初始化和配置。 2. routers 目录:包含所有路由定义和处理函数。 3. models 目录:包含所有请求和响应模型定义。 4. dependencies 目录:包含所有依赖项定义和依赖项注入逻辑。 5. services 目录:包含所有业务逻辑处理函数,如数据库操作、业务计算等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写bug如流水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值