以下是一个示例,演示如何在 FastAPI 中创建一个更大的应用,包括多个文件:
1. 创建主应用文件(main.py):
# main.py
from fastapi import FastAPI
from routers import items
app = FastAPI()
# 包含路径操作的路由
app.include_router(items.router)
2. 创建 routers 目录并在其中添加路由文件(routers/items.py):
# routers/items.py
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.orm import Session
from database import get_db
from models import Item
router = APIRouter()
@router.post("/items/")
async def create_item(item: Item, db: Session = Depends(get_db)):
db.add(item)
db.commit()
db.refresh(item)
return item
@router.get("/items/")
async def read_items(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
items = db.query(Item).offset(skip).limit(limit).all()
return items
3. 创建 database.py 文件,用于处理数据库连接和依赖项(database.py):
# database.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
4. 创建 models.py 文件,用于定义数据模型(models.py):
# models.py
from sqlalchemy import Column, Integer, String
from database import Base
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
description = Column(String)
通过这种组织结构,代码更易于管理。每个文件负责一个特定的任务,例如主应用文件(main.py)用于创建 FastAPI 应用实例,路由文件(routers/items.py)用于定义路径操作,database.py 用于处理数据库连接,models.py 用于定义数据模型。
确保你的目录结构和文件名符合你的项目需要,并且路径和引用关系正确。在主应用文件中,使用 app.include_router 来引入其他路由文件。这样,你可以在不同的文件中组织代码,使其更具可读性和可维护性。
转载请注明出处:http://www.zyzy.cn/article/detail/7397/FastAPI