第 20 章 实战项目与学习回顾
学习目标
学完本章,你应该能:
- 独立完成一个完整的业务模块开发
- 回顾整个学习路线,查漏补缺
- 知道下一步往哪个方向深入
一、实战项目:图书管理系统
用 fba 开发一个"图书管理"模块,检验你的学习成果。功能需求:
- 图书的增删改查(书名、作者、ISBN、价格)
- 图书列表分页查询
- 按书名搜索
实战开发流程总览
实战步骤(按 fba 标准流程)
第 1 步:定义 Model(数据库表)
python
class Book(Base):
__tablename__ = 'book'
id: Mapped[id_key] = mapped_column(init=False)
title: Mapped[str] = mapped_column(String(128), comment='书名')
author: Mapped[str | None] = mapped_column(String(64), comment='作者')
isbn: Mapped[str | None] = mapped_column(String(32), unique=True, comment='ISBN')
price: Mapped[float | None] = mapped_column(comment='价格')第 2 步:定义 Schema(数据校验)
python
class CreateBookParam(SchemaBase):
title: str = Field(description='书名')
author: str | None = Field(default=None, description='作者')
price: float | None = Field(default=None, description='价格')第 3 步:定义 Router(路由)
python
@router.get('', summary='图书列表')
async def get_books(db: CurrentSession) -> ResponseModel:
return await book_service.get_book_list(db)
@router.post('', summary='新增图书')
async def create_book(obj: CreateBookParam, db: CurrentSessionTransaction) -> ResponseModel:
return await book_service.create_book(db, obj)第 4 步:编写 Service(业务)
python
class BookService:
async def get_book_list(self, db):
return await book_dao.get_list(db)
async def create_book(self, db, obj):
return await book_dao.create(db, obj)第 5 步:编写 CRUD(数据库操作)
python
class BookCRUD(BaseCRUD[Book]):
pass
book_dao = BookCRUD(Book)挑战升级
完成基础功能后,可以尝试:
- 给查询接口加分页
- 给新增/删除接口加权限校验(JWT + RBAC)
- 给查询接口加缓存(@cached)
- 用代码生成器自动生成一遍,对比手写结果
二、学习路线回顾
回顾这 20 章,你已经走过的路径:
完整学习路线图
三、核心知识点浓缩
如果你只能记住 10 件事,记住这些:
- 三层架构:API → Service → CRUD,职责分离
- 五目录:model/schema/api/service/crud
- 开发顺序:model → schema → router → service → crud
- 查询用 CurrentSession,增删改用 CurrentSessionTransaction
- 统一响应:
{code, msg, data},用 response_base - CRUD 命名:get/get_list/create/update/delete
- Schema 命名:Create/Update/Delete/Get 前缀 + Param/Detail 后缀
- 认证授权:JWT 认证 + RBAC 授权
- 缓存:读用 @cached,写用 @cache_invalidate
- 配置:都在 conf.py,优先级环境变量 > .env > 默认值
四、下一步深入方向
学完基础后,可以按需深入:
| 方向 | 学习内容 |
|---|---|
| 权限进阶 | 数据权限、Casbin、SSO 单点登录 |
| 数据进阶 | 逻辑删除、雪花主键、多租户 |
| 性能进阶 | 缓存策略调优、数据库索引 |
| 架构进阶 | 插件开发、私有插件仓库 |
| 运维进阶 | Grafana 监控、日志分析 |
五、推荐资源
- 官方文档:查具体特性的权威参考
- 项目仓库:读源码,理解实现细节
- fba skills:AI 辅助开发
- 插件市场:寻找现成插件
结语
恭喜你完成 fba 的学习!这套框架的精髓在于边界感和工程规范——它没有把架构做得很重,但该有的工程约束都在。
记住社区架构师的那句话:
"它没有把架构做得很重,但该有的工程约束都在。对中后台、管理系统、内部平台这类项目来说,这个尺度刚好。"
现在,去动手实践吧。最好的学习方式,就是用它做一个真实的项目。
全文完。感谢阅读。