项目结构分析backend/ app/ # 主代码目录重点看这里 models/ # 数据库模型 ⭐ 第3步看 schemas/ # Pydantic 模型 ⭐ 第4步看 routers/ # API 路由 ⭐ 第5步看 crud/ 或 services/ # 数据库操作 ⭐ 第6步看 config.py # 管理所有配置项 database.py # 数据库连接配置 main.py # 入口文件 ⭐ 第1步看 migrations/ # 数据库版本管理自动生成不用看 tests/ # 测试代码学了再看 .env.example # 环境变量示例 ⭐ 第2步看 pyproject.toml # 依赖配置 ⭐ 第2步看 seed.py / seed.sql # 初始数据填充 project_alpha.db # SQLite 数据库文件第1步从入口文件开始 - 理解启动流程找main.py或app/__init__.py通常在backend/app/目录下backend/ app/ __init__.py# 或者main.py# 这是最常见的入口文件看什么# 典型的 main.py 结构fromfastapiimportFastAPIfromapp.routersimportuser,item# 路由注册fromapp.databaseimportengine# 数据库连接appFastAPI()# 看这里注册了哪些路由app.include_router(user.router)app.include_router(item.router)app.on_event(startup)defstartup():# 启动时做什么pass这一步让你知道项目有哪些功能模块通过 routers 看出第2步看配置文件 - 理解项目依赖找这些文件backend/ .env.example# 环境变量数据库地址、密钥等pyproject.toml# 项目依赖相当于 package.jsonalembic.ini# 数据库迁移配置看什么.env.example→ 复制成.env了解需要配置什么pyproject.toml→dependencies下面有哪些包fastapiuvicorn→ Web 框架sqlalchemyalembic→ 数据库 ORMpydantic→ 数据验证httpx→ HTTP 客户端第3步看数据模型 - 理解核心数据结构找models.py或app/models/目录backend/ app/ models/ __init__.py user.py# 用户表item.py# 商品表order.py# 订单表看什么SQLAlchemy 模型示例fromsqlalchemyimportColumn,Integer,Stringfromapp.databaseimportBaseclassUser(Base):__tablename__usersidColumn(Integer,primary_keyTrue)nameColumn(String(50))emailColumn(String(100),uniqueTrue)这一步让你知道数据库有哪些表表之间如何关联外键每个字段的类型和约束第4步看 Pydantic Schema - 理解 API 的输入输出找schemas.py或app/schemas/frompydanticimportBaseModel# 请求体长什么样classUserCreate(BaseModel):name:stremail:strpassword:str# 响应体长什么样classUserResponse(BaseModel):id:intname:stremail:str对比 model 和 schemaModel对应数据库表有 id、password 等SchemaAPI 暴露给外界的结构可能隐藏 password第5步看路由/接口 - 理解业务功能找routers/或api/或views/backend/ app/ routers/ user.py# /users 相关的接口item.py# /items 相关的接口看一个典型的路由文件fromfastapiimportAPIRouter,Depends,HTTPExceptionfromsqlalchemy.ormimportSessionfromappimportcrud,schemas,modelsfromapp.databaseimportget_db routerAPIRouter(prefix/users,tags[用户])# GET 请求 - 获取列表router.get(/,response_modellist[schemas.UserResponse])defget_users(skip:int0,limit:int100,db:SessionDepends(get_db)):userscrud.get_users(db,skipskip,limitlimit)returnusers# POST 请求 - 创建router.post(/,response_modelschemas.UserResponse)defcreate_user(user:schemas.UserCreate,db:SessionDepends(get_db)):db_usercrud.get_user_by_email(db,emailuser.email)ifdb_user:raiseHTTPException(status_code400,detailEmail already registered)returncrud.create_user(dbdb,useruser)# GET 请求 - 获取单个router.get(/{user_id},response_modelschemas.UserResponse)defget_user(user_id:int,db:SessionDepends(get_db)):usercrud.get_user(db,user_iduser_id)ifuserisNone:raiseHTTPException(status_code404,detailUser not found)returnuser这一步让你知道有哪些 API 端点GET/POST/PUT/DELETE每个接口需要什么参数每个接口返回什么数据第6步看 CRUD 操作 - 理解数据库操作找crud.py或services/fromsqlalchemy.ormimportSessionfromappimportmodels,schemasdefget_user(db:Session,user_id:int):returndb.query(models.User).filter(models.User.iduser_id).first()defget_user_by_email(db:Session,email:str):returndb.query(models.User).filter(models.User.emailemail).first()defget_users(db:Session,skip:int0,limit:int100):returndb.query(models.User).offset(skip).limit(limit).all()defcreate_user(db:Session,user:schemas.UserCreate):fake_hashed_passworduser.passwordnotreallyhasheddb_usermodels.User(emailuser.email,nameuser.name,hashed_passwordfake_hashed_password)db.add(db_user)db.commit()db.refresh(db_user)returndb_user这一步是项目的核心业务逻辑如何从数据库读取/写入数据。阅读步骤第1步: app/main.py ← 入口看整体结构 ↓ 第2步: app/config.py ← 配置看环境变量 ↓ 第3步: app/database.py ← 数据库连接看 get_db() ↓ 第4步: app/models/tag.py ← 最简单的表 app/models/ticket.py ← 主表 ↓ 第5步: app/schemas/tag.py ← 简单的数据结构 app/schemas/ticket.py ← 主要的 API 数据结构 ↓ 第6步: app/routers/tags.py ← 简单的 API app/routers/tickets.py ← 核心 API看如何组合上面所有东西实际操作步骤# 1. 先找到 main.pycdbackend/appls-la# 看看有没有 main.py 或者 __init__.py# 2. 如果找不到用 find 命令find.-namemain.py-o-name__init__.py# 3. 查看目录结构ls-Rapp/# 递归列出所有文件快速上手技巧先改一个简单接口试试找一个 GET 接口修改它的返回内容重启服务看效果跟着请求走一遍前端发起请求 → router 接收 → 调用 crud → 操作 model → 返回 schema在 router 里打断点或加print()看数据流转