2018年我刚转行做后端,整个人是懵的。网上搜Python框架,Django、Flask、FastAPI三个名字反复出现。我挨个试了一遍,最后只留下一个。这个过程挺折腾的,现在回头看正好帮大家避避坑。
先说Django。当时觉得这个框架什么都有,数据库管理、后台管理系统、用户认证全给你配好了。我跟着教程搭了个博客,确实快。但很快发现问题:它太重了。我想做个简单的API接口,它非要我配置整个ORM、中间件、模板引擎。改个字段要跑三条命令,启动项目要等好几秒。对于小团队来说,这种重量级框架就像穿了铁甲游泳,浑身使不上劲。
接着试Flask。这个框架就轻巧多了,核心代码就几行。路由写起来很爽,想加什么功能自己装插件。我拿它做了个订单系统,开发速度确实快。但是问题出在项目变大以后。目录结构要自己规划,插件之间可能打架,数据库迁移工具不够顺手。有次半夜上线,因为插件版本冲突导致服务挂了半小时。那时候我就想,也许我需要一个折中的方案。
后来遇到FastAPI,第一感觉是清爽。它的自动文档生成太省心了。写完接口直接带出Swagger和ReDoc文档,前端同事再也不用追着我问参数。性能也不错,异步支持是原生带的,处理并发请求时CPU占用比Flask低一半。最让我满意的是类型提示,参数写错了IDE直接报错,不用等到运行时才暴露问题。
但真正让我决定换掉前面两个框架的,是团队协作体验。FastAPI的依赖注入系统帮了大忙。我们把数据库、缓存、配置都做成依赖项,每个接口只管写业务逻辑。新人来了看依赖关系图就明白整个架构。代码审查也变得简单了,每个函数的功能边界很清楚。
如果你也在选框架,建议先想清楚项目规模。要做全栈网站,团队有十个人以上,Django还是稳妥的。如果只是几个API,Flask搭配好插件也够用。但如果想要现代开发体验,又担心未来项目膨胀,FastAPI可能是最好的入手点。我那个订单系统后来用FastAPI重构了一遍,代码量少了30%,测试覆盖率却从60%升到了90%。
说到底没有完美的框架。选一个自己用着舒服,团队能驾驭的就行。我最后留下FastAPI是因为它解决了我的核心痛点:开发快、文档自动生成、错误少、好维护。这个选择让我少加了很多夜班,这就够了。