FastAPI入门:Python后端开发新手指南
——一个被裁老广程序员的自救之路
作者:阿强,35岁,广州西关人,前大厂Java后端,现自由接外包的全栈“打工人”
去年十月的一个雨夜,我坐在珠江新城某写字楼18楼的会议室里,HR递来一杯温水,语气平静地说:“阿强,公司战略调整,你的岗位……被优化了。”
那天是2023年10月17号,周四。窗外小蛮腰的灯光在雨幕中模糊成一片橙红。我拿着那张薄薄的N+1补偿单(税后4万8),走出大厦时,手有点抖。
回家路上,老婆发来微信:“今晚煲了老火汤,你几点到?”
我没敢回。
因为我知道,下个月房贷8200,房租3500(没错,我和老婆还租着天河的小两房),孩子幼儿园学费4600……而我的简历,已经三年没更新了。
从Springboot到FastAPI:不是转行,是求生
我在上一家公司干了五年Java后端,主力框架就是Springboot。每天写Controller、Service、Mapper,配YAML,调MyBatis,跑JUnit测试……代码写得熟到闭眼都能敲。但问题也来了——市场变了。
裁员潮一浪接一浪,招聘网站上“Java高级工程师”要求清一色写着:“精通微服务、高并发、分布式架构、云原生……”,而薪资却从原来的22k悄悄降到了15k,甚至更低。更扎心的是,HR看到我35岁的年龄,眼神都飘忽了。
有天晚上,我翻着GitHub Trending,无意点进一个叫 FastAPI 的项目。Star数暴涨,文档清爽,示例代码简洁到让我怀疑人生:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
就这?启动服务,浏览器打开 http://localhost:8000,直接返回JSON。不用写DTO,不用配XML,连Swagger UI都是自动集成的!
我愣住了。
这不就是我梦寐以求的“轻量级后端”吗?
老广程序员的第一次FastAPI尝试
说干就干。
上周五晚上十点,娃睡了,老婆在追《繁花》,我泡了壶普洱,打开VSCode,新建了个文件夹:/home/ahqiang/fastapi-demo。
第一步,装环境:
pip install fastapi uvicorn[standard]
第二步,写个最简单的接口,模拟查用户信息:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
id: int
name: str
email: str
@app.get("/users/{user_id}")
def get_user(user_id: int):
# 模拟数据库查询
return User(id=user_id, name="阿强", email="ahqiang@gz.com")
第三步,运行:
uvicorn main:app --reload
浏览器输入 http://localhost:8000/users/123,秒出结果:
{
"id": 123,
"name": "阿强",
"email": "ahqiang@gz.com"
}
更绝的是,访问 /docs,自动生成交互式API文档!连Postman都不用开。
那一刻,我差点哭出来。
不是感动,是解脱——原来写后端,可以这么轻松。
为什么FastAPI让我这个Java老炮心动?
我知道很多人会说:“FastAPI只是玩具,企业级还得靠Springboot。”
这话以前我也信。但在接外包的现实里,快、准、稳才是王道。
我最近接的一个私活:帮一家荔湾茶楼做线上预约系统。老板预算2万,工期两周。如果用Springboot,光搭环境、配Druid、整合Redis、写异常处理,就得三天。但用FastAPI:
- 一天搞定用户登录(用JWT)
- 两天写完预约、取消、查询接口
- 自带异步支持,高峰期也不怕(茶楼周末爆满!)
- 部署?一行Docker命令搞定
而且,Python生态对AI、数据分析、自动化脚本的支持太香了。我顺手加了个“客流预测”功能,用scikit-learn训练了个小模型,老板直呼“高科技”!
反观Springboot,虽然强大,但太“重”了。就像开一辆坦克去买菜——能到,但油耗高、停车难、启动慢。
代码人生的转折点:不是技术,是心态
其实,学FastAPI的过程并不顺利。
刚开始我总想把它“Java化”:非要搞三层架构,非要抽象BaseService,非要写200行配置类……结果代码又臭又长。
直到有一天,我看了FastAPI作者Sebastián Ramírez的一句话:
“FastAPI is not about replacing Django or Flask. It’s about making APIs as simple and intuitive as possible.”
我才醒悟:工具是为了服务业务,不是为了满足技术洁癖。
现在的我,不再执着于“我是Java程序员”这个标签。客户要什么,我就用最合适的工具交付什么。
有时候是FastAPI + Vue做全栈,
有时候是用Node.js写个小爬虫,
甚至上周还帮邻居奶茶店写了个Excel自动排班脚本(用pandas,30分钟搞定)。
代码人生,不该被语言或框架绑架。
给想学FastAPI的新手几点建议
如果你和我一样,是从Java/Springboot转过来的,或者刚入行想找条快车道,听句实在话:
- 别纠结“是否企业级”——先跑通第一个API,比争论架构重要一百倍。
- 善用Pydantic:这是FastAPI的灵魂。数据校验、序列化、文档生成,全靠它。比Java的Bean Validation简洁太多。
- 异步不是必须,但值得学:
async def+await在IO密集型场景(如调第三方API)提升巨大。 - 部署别怕Docker:一个
Dockerfile,三行命令,服务器上直接跑。比Tomcat部署省心多了。 - 中文文档很全:感谢国内开发者,FastAPI中文网(fastapi.tiangolo.com/zh)质量极高。
最重要的是——动手写。
别光看教程,今晚就建个虚拟环境,敲那几行“Hello World”。你离接单赚钱,可能只差一个API的距离。
结语:在不确定的时代,做确定的事
现在,我每月接2-3个小项目,收入不稳定但自由。上个月赚了1万8,这个月可能只有9千。但我不焦虑了。
因为我明白了一件事:技术人的价值,不在你用了多“高级”的框架,而在你能不能用最短路径解决问题。
FastAPI对我而言,不只是一个Python框架,更是一次“减负”——减掉对大厂光环的执念,减掉对复杂架构的迷信,减掉“35岁就该被淘汰”的恐惧。
前几天,老婆问我:“你还想回大厂吗?”
我说:“不想了。我现在写代码,是为了生活,不是为了KPI。”
窗外,西关的老榕树沙沙作响。
我的终端里,FastAPI服务正在安静运行。
请求来了,响应出去。
简单,可靠,真实。
这,就是我的代码人生。
后记:如果你也在转型路上迷茫,不妨试试FastAPI。它不会让你一夜暴富,但可能帮你接到第一单外包,养活自己,找回尊严。
技术无贵贱,能解决问题的,就是好技术。
—— 阿强,于广州恩宁路出租屋,2024年6月

评论 0