异步FastAPI与MongoDB项目教程
async-fastapi-mongoRepository housing code for the Testdriven article.项目地址:https://gitcode.com/gh_mirrors/as/async-fastapi-mongo
1. 项目的目录结构及介绍
async-fastapi-mongo/
├── app/
│ ├── __init__.py
│ ├── main.py
│ ├── models.py
│ ├── routes.py
│ └── schemas.py
├── tests/
│ ├── __init__.py
│ └── test_main.py
├── .gitignore
├── Dockerfile
├── LICENSE
├── README.md
├── docker-compose.yml
├── example.env
├── poetry.lock
├── pyproject.toml
└── run_api_tests.sh
目录结构介绍
app/
: 包含应用程序的主要代码。
__init__.py
: 初始化文件。main.py
: 项目的主启动文件。models.py
: 数据库模型定义。routes.py
: API路由定义。schemas.py
: Pydantic模型定义。
tests/
: 包含测试代码。
__init__.py
: 初始化文件。test_main.py
: 主测试文件。
.gitignore
: Git忽略文件配置。Dockerfile
: Docker容器配置文件。LICENSE
: 项目许可证。README.md
: 项目说明文档。docker-compose.yml
: Docker Compose配置文件。example.env
: 环境变量示例文件。poetry.lock
: Poetry依赖锁定文件。pyproject.toml
: Poetry项目配置文件。run_api_tests.sh
: 运行API测试的脚本。
2. 项目的启动文件介绍
app/main.py
from fastapi import FastAPI
from motor.motor_asyncio import AsyncIOMotorClient
from app.routes import router
app = FastAPI()
@app.on_event("startup")
async def startup_db_client():
app.mongodb_client = AsyncIOMotorClient("mongodb://localhost:27017")
app.mongodb = app.mongodb_client.get_database("async_fastapi_mongo")
@app.on_event("shutdown")
async def shutdown_db_client():
app.mongodb_client.close()
app.include_router(router)
启动文件介绍
main.py
是项目的入口文件,定义了FastAPI应用实例。startup_db_client
函数在应用启动时初始化MongoDB客户端。shutdown_db_client
函数在应用关闭时关闭MongoDB客户端。app.include_router(router)
包含了路由定义。
3. 项目的配置文件介绍
pyproject.toml
[tool.poetry]
name = "async-fastapi-mongo"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
[tool.poetry.dependencies]
python = "^3.8"
fastapi = "^0.68.0"
uvicorn = "^0.15.0"
motor = "^2.5.1"
pydantic = "^1.8.2"
[tool.poetry.dev-dependencies]
pytest = "^6.2.5"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
配置文件介绍
pyproject.toml
使用Poetry管理项目依赖。[tool.poetry]
部分定义了项目的基本信息。[tool.poetry.dependencies]
部分定义了项目运行时的依赖。[tool.poetry.dev-dependencies]
部分定义了开发时的依赖。[build-system]
部分定义了构建系统的要求。
docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
environment:
- MONGO_URL=mongodb://mongo:27017
async-fastapi-mongoRepository housing code for the Testdriven article.项目地址:https://gitcode.com/gh_mirrors/as/async-fastapi-mongo