FastAPI入门:Python后端开发新手指南——一个裸辞半年的前大厂人的复健日记
去年十月,我坐在武汉光谷软件园某栋写字楼18楼的工位上,手指悬在键盘上方,迟迟不敢点下那个“辞职申请”按钮。窗外是熟悉的关山大道,楼下咖啡店排着长队,而我的银行卡余额刚过五位数——房租3500,老婆怀孕三个月,房贷6200。但那一刻,我真的撑不住了。
干了五年Go后端,从CRUD到高并发,从K8s到Service Mesh,代码写得越来越快,人却越来越空。每天重复着“需求评审-写接口-联调-上线-背锅”的循环,连做梦都在debug。和HR谈完那天,她说:“你这个职级,现在市场不太好……要不先缓一缓?”我没说话,只是默默点了提交。
裸辞后的前三个月,我在家刷LeetCode、看论文、甚至试着做自媒体。但很快,焦虑像武汉夏天的湿气一样渗进骨子里。直到今年二月,老婆看着我日渐稀疏的头顶说:“要不学点新东西?Python最近不是挺火的?”
为什么是FastAPI?
说实话,一开始我是抗拒的。毕竟在大厂那几年,我们团队用Go写了整整三代微服务,性能杠杠的,社区也成熟。但当我翻遍招聘网站发现:武汉本地大量中小公司、创业团队,甚至一些传统企业数字化部门,都在招Python后端,而且明确写着“熟悉FastAPI优先”。
更关键的是,我注意到一个趋势:很多运营系统、内部工具、数据中台类的项目,根本不需要Go那种极致性能,反而更看重开发速度和生态丰富度。而FastAPI,恰好在这两点上碾压传统Flask/Django。
于是,我决定拿自己当小白鼠,从零开始搞一个真实项目练手。
项目实战:给老婆做的“孕期饮食管理小助手”
上周五晚上十一点,我正刷GitHub Trending,突然灵光一闪:不如给老婆做个孕期饮食记录工具?她每天被各种“不能吃螃蟹”“要补叶酸”的信息轰炸,记都记不住。
说干就干。我打开VS Code,新建项目目录 pregnancy-diet-api,然后:
pip install fastapi uvicorn python-dotenv
第一步:最简API跑起来
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"msg": "老婆,今天吃鱼了吗?"}
运行 uvicorn main:app --reload,浏览器打开 http://localhost:8000,看到那句傻乎乎的问候语时,我居然有点感动——这可是我裸辞半年后写的第一个能跑的服务!
第二步:建模 + 数据库
我用Pydantic定义了食物模型:
from pydantic import BaseModel
from datetime import date
class FoodItem(BaseModel):
name: str
category: str # 蔬菜/水果/肉类...
safe_in_pregnancy: bool
note: str = ""
数据库选了SQLite(轻量!),配合SQLModel(FastAPI作者新推的ORM),三行代码搞定连接。对比以前在Go里折腾GORM+DB migration的痛苦,简直泪流满面。
第三步:加点“运营”思维
这里有个关键转折。起初我只是想做个记录工具,但老婆提了个需求:“能不能提醒我哪些食物吃了太多?”——这不就是运营常说的“用户行为分析”吗?
于是我加了个接口 /analytics/weekly_summary,统计每周摄入类别分布。还埋了个彩蛋:如果连续三天没吃绿叶蔬菜,返回一句温柔提醒:“亲爱的,菠菜在召唤你哦~”
这个小功能让我意识到:FastAPI不只是写接口,更是快速验证产品想法的利器。比起Go那种“先设计proto再写handler再测性能”的重型流程,FastAPI让我把精力集中在业务逻辑本身。
和Go的对比:不是替代,而是互补
坦白说,写完这个小项目后,我对FastAPI的态度变了。它不是“Go的廉价替代品”,而是在不同场景下的最优解。
| 维度 | Go (Gin/Echo) | FastAPI |
|---|---|---|
| 开发速度 | 中等(强类型需更多样板代码) | 极快(自动文档+Pydantic校验) |
| 性能 | 高(原生并发) | 中(依赖ASGI,但够用) |
| 生态 | 微服务/云原生强 | 数据科学/AI/脚本工具强 |
| 学习曲线 | 陡(goroutine/channel) | 平缓(Python语法友好) |
我在GitHub上搜了下,发现很多开源项目也开始用FastAPI做管理后台或AI API层。比如Hugging Face的Transformers就提供了FastAPI模板。这说明:工具的选择,终究要服务于项目目标。
复出面试:FastAPI成了我的加分项
上个月,我投了一家做智能医疗的武汉本地公司。面试官是个技术总监,聊到我做的孕期项目时,他眼睛一亮:“我们正好要重构内部运营系统的API层,现在用Flask太慢了。”
我当场给他演示了FastAPI自动生成的Swagger文档(访问 /docs 即可),以及如何用 Depends 实现权限校验。他说:“你这半年没白歇,反而踩准了技术趋势。”
最后谈薪时,HR试探性问:“你之前是大厂P7,现在接受降薪吗?”我笑了笑:“我现在的期望是22k,比裸辞前涨了7k。” 她愣了一下,但第二天就发了offer。
为什么敢要价更高?因为我证明了自己不仅能写代码,还能用技术驱动业务——那个小小的饮食助手,本质上是一个微型SaaS产品,包含了用户需求、数据反馈、运营触达的完整闭环。
给想入坑FastAPI的朋友几点建议
- 别神话它:FastAPI不是银弹。高并发、低延迟场景还是Go/Rust更稳。
- 善用自动生成文档:Swagger UI和ReDoc是沟通神器,省下80%的接口对齐会议。
- 结合异步:用
async/await处理IO密集型任务(比如调第三方API),但CPU密集型别硬上。 - 部署别踩坑:本地用uvicorn,生产环境务必套Gunicorn+Uvicorn Worker,参考官方Dockerfile。
- GitHub是你的第二简历:哪怕项目再小,README写清楚、代码有注释、issue及时回,比刷100道算法题更有说服力。
写在最后:技术人的“Gap Year”不是浪费
现在我又回到了光谷软件园,工位换到了一栋更新的楼。每天通勤路上,我会想起那半年在家调试FastAPI的日日夜夜。焦虑是真的,迷茫是真的,但成长也是真的。
技术栈会变,框架会过时,但解决问题的能力永远值钱。FastAPI让我重新找回了写代码的乐趣——不是为了KPI,而是为了创造一点真实的价值,哪怕只是让老婆少操心一顿饭。
如果你也在Gap期,别急着否定自己。找个周末,用FastAPI搭个能解决身边人痛点的小工具。当你看到别人因为你的代码露出笑容时,你就知道:一切值得。
共勉。

评论 0