Skip to content

第 20 章 实战项目与学习回顾 ​

学习目标 ​

学完本章,你应该能:

  1. 独立完成一个完整的业务模块开发
  2. 回顾整个学习路线,查漏补缺
  3. 知道下一步往哪个方向深入

一、实战项目:图书管理系统 ​

用 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 件事,记住这些:

  1. 三层架构:API → Service → CRUD,职责分离
  2. 五目录:model/schema/api/service/crud
  3. 开发顺序:model → schema → router → service → crud
  4. 查询用 CurrentSession,增删改用 CurrentSessionTransaction
  5. 统一响应:{code, msg, data},用 response_base
  6. CRUD 命名:get/get_list/create/update/delete
  7. Schema 命名:Create/Update/Delete/Get 前缀 + Param/Detail 后缀
  8. 认证授权:JWT 认证 + RBAC 授权
  9. 缓存:读用 @cached,写用 @cache_invalidate
  10. 配置:都在 conf.py,优先级环境变量 > .env > 默认值

四、下一步深入方向 ​

学完基础后,可以按需深入:

方向学习内容
权限进阶数据权限、Casbin、SSO 单点登录
数据进阶逻辑删除、雪花主键、多租户
性能进阶缓存策略调优、数据库索引
架构进阶插件开发、私有插件仓库
运维进阶Grafana 监控、日志分析

五、推荐资源 ​

结语 ​

恭喜你完成 fba 的学习!这套框架的精髓在于边界感和工程规范——它没有把架构做得很重,但该有的工程约束都在。

记住社区架构师的那句话:

"它没有把架构做得很重,但该有的工程约束都在。对中后台、管理系统、内部平台这类项目来说,这个尺度刚好。"

现在,去动手实践吧。最好的学习方式,就是用它做一个真实的项目。


全文完。感谢阅读。