FastAPI入门:一个成都应届生的后端自救指南
去年十月的一个雨夜,我蹲在租来的老小区阳台上,手里捏着一杯已经凉透的瑞幸,盯着电脑屏幕上闪烁的终端窗口。窗外是成都熟悉的潮湿空气和远处霓虹灯模糊的光晕,屋里只有键盘敲击声和空调外机嗡嗡的低鸣。那天晚上,我投出了第37份简历,依然石沉大海。
我是小林,一个普通二本计算机专业的应届毕业生,坐标成都。没有大厂实习,没打过ACM,GitHub上除了课程作业几乎一片空白。毕业前夜,室友拉着我去玉林路的小酒馆喝酒,他说:“兄弟,你这简历怕是要等到明年春招了。”我没说话,只是默默喝完了最后一口啤酒——苦得发涩。
当Springboot成了“别人家的孩子”
校招季开始前,我和大多数同学一样,一头扎进了Java生态。毕竟,身边所有人都说:“Java稳,大厂都用Springboot,好找工作。”我在B站刷了整整一个月的“Springboot从入门到精通”,抄了无数遍@RestController和@Autowired,甚至能把Bean的生命周期倒背如流。
但现实很骨感。面试官问:“讲讲你对Spring Cloud的理解?”我支支吾吾说了两句Eureka和Ribbon,对面HR小姐姐礼貌地笑了笑:“同学,你的项目经验还是太单薄了。”
那段时间,我每天早上六点起床刷LeetCode,晚上十一点还在看《深入理解Java虚拟机》。房租3500,吃饭2000,父母每月还要补贴我1500——这种“啃老”状态让我焦虑得整夜失眠。有一次我妈打电话来,小心翼翼地问:“要不……回家考个公务员?”我强笑着说“再给我三个月”,挂掉电话后躲在被子里哭了十分钟。
转机出现在11月底。我在脉脉上看到一条内推信息:某成都本地互联网公司招Python后端实习生,要求熟悉FastAPI。我当时心里一咯噔——FastAPI?那不是个“玩具框架”吗?不是都说生产环境都用Django或者Flask?
但我已经没得选了。第二天,我硬着头皮把简历改了又改,删掉了所有关于Springboot的“精通”,换上了“了解FastAPI基础用法”。没想到,三天后居然收到了面试通知。
从爬虫到FastAPI:我的“曲线救国”之路
面试那天,技术面官是个戴黑框眼镜的哥们,看起来比我大不了几岁。他扫了一眼我的简历,突然笑了:“你写了个豆瓣电影爬虫?用Scrapy写的?”
我点点头,心里直打鼓——这项目是我大三做的,代码乱得我自己都不忍直视。
“有意思,”他说,“那你有没有想过,把爬到的数据通过API暴露出去?比如别人调用你的接口,就能拿到最新上映的电影评分?”
我愣住了。以前做爬虫,都是存到CSV或者MySQL就完事了,从来没想过要对外提供服务。那一刻,我突然意识到:后端开发的核心,不是框架本身,而是如何让数据流动起来。
回家后,我花了整整一周时间,重新改造了我的豆瓣爬虫。这次,我不再只关注怎么反反爬、怎么解析HTML,而是思考:如果我要把这个能力变成一个服务,用户需要什么?他们怎么调用?返回什么格式最友好?
于是我接触到了FastAPI。
第一次跑通uvicorn main:app --reload时,我激动得差点从椅子上跳起来。短短十几行代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/movies")
def get_movies():
# 这里调用我的爬虫逻辑
return {"data": movies_list}
启动服务,浏览器输入http://localhost:8000/movies,JSON数据哗啦啦就出来了!比Springboot那种动辄几十行配置、还要等两分钟启动的体验,简直爽到飞起。
更重要的是,FastAPI自动生成的Swagger文档(访问/docs)让我惊为天人——不用写一行注释,接口说明、参数类型、示例响应全都自动展示。我立刻截图发给那个面试官:“哥,你看!”
他回了个笑哭表情:“小伙子,上道了。”
为什么FastAPI适合我们这样的“草根开发者”?
说实话,作为一个非科班出身、资源有限的应届生,FastAPI给了我一种“被温柔对待”的感觉。它不像Springboot那样要求你先理解IOC、AOP、事务管理等一系列概念才能写出Hello World。它更像一个聪明的朋友,你只需要告诉他“我想做什么”,他就帮你搞定剩下的。
举个具体例子。我之前用Java写一个带参数的GET接口,可能要这样:
@GetMapping("/movies")
public ResponseEntity<List<Movie>> getMovies(@RequestParam String genre) {
// ...
}
而在FastAPI里:
@app.get("/movies")
def get_movies(genre: str):
# genre 自动就是字符串类型
return movies.filter_by_genre(genre)
类型提示(Type Hints)直接告诉你参数是什么类型,返回值是什么结构。配合Pydantic模型,连请求体验证都省了:
from pydantic import BaseModel
class MovieCreate(BaseModel):
title: str
rating: float
@app.post("/movies")
def create_movie(movie: MovieCreate):
# movie 自动验证title是否为str,rating是否为float
save_to_db(movie)
return {"status": "success"}
这种“约定优于配置”的设计,对新手极其友好。我不用再纠结“为什么我的JSON解析失败了”、“为什么前端传过来的字段后端收不到”——FastAPI会在开发阶段就告诉我哪里错了,而不是等到线上报500。
而且,性能是真的香。官方benchmark显示,FastAPI的吞吐量接近Go语言的Gin框架,远超Flask和Django。虽然对我们小项目来说可能感知不强,但心里踏实啊——至少不会因为“Python慢”被面试官diss。
从FastAPI出发,重新理解后端开发
在那家公司实习三个月后,我拿到了转正offer,月薪15k。虽然比起北上广动辄30k+的数字不算高,但在成都,刨去房租水电,还能存下近万块,已经让我爸妈在亲戚面前挺直了腰杆。
更重要的是,这段经历彻底改变了我对后端开发的认知。
以前我以为,会Springboot = 会后端开发。现在我才明白,框架只是工具,核心是解决问题的能力。无论是用Java写微服务,还是用Python搭API,本质都是:接收请求 → 处理逻辑 → 返回结果。
FastAPI让我快速验证想法、快速交付原型。上周五晚上,产品经理临时说要加一个“导出用户行为日志”的功能。如果是以前,我可能会想:“得建个新Controller,配个Service,写个Mapper……”但现在,我打开main.py,二十分钟就搞定了:
@app.get("/export/logs")
def export_logs(user_id: int, start_date: str, end_date: str):
logs = query_logs(user_id, start_date, end_date)
csv_content = convert_to_csv(logs)
return Response(
content=csv_content,
media_type="text/csv",
headers={"Content-Disposition": "attachment; filename=logs.csv"}
)
测试通过,提交代码,回家睡觉。第二天晨会,产品经理惊讶地说:“这么快?”
我笑笑没说话。心里却想:工具选对了,效率真的能翻倍。
给同样迷茫的应届生朋友几点真心话
如果你也像我一样,普通学校、没有大厂光环、被Springboot劝退过无数次,我想说:别死磕“主流”。
Java和Springboot当然强大,生态成熟,岗位多。但它们的学习曲线陡峭,对新手不够友好。而FastAPI这类现代框架,用Python的简洁语法 + 异步支持 + 自动生成文档,让我们能快速做出“看得见摸得着”的东西——这对建立信心至关重要。
我并不是说要放弃Java。事实上,我现在也在学Springboot,因为很多大厂后端栈还是以Java为主。但FastAPI给了我一个“缓冲期”:先用它做出项目,积累经验,再回头攻克更复杂的体系。这就叫曲线救国。
另外,别小看爬虫。很多人觉得爬虫“低端”,但其实它是最好的全栈练手项目:网络请求、数据解析、存储设计、API暴露、甚至部署监控——一条龙全包了。我的第一个FastAPI项目,就是基于爬虫改造的。面试时聊这个,比空谈“我懂微服务”有说服力多了。
最后,关于城市选择。我在成都,生活成本低,节奏慢,房租3500能住不错的次新小区。虽然工资比一线低30%,但幸福感高不少。上周和老婆(其实是女朋友,但她总自称我老婆)商量买房,算了算首付压力,发现留在成都反而更现实。有时候,慢一点,稳一点,才是最快的路。
写在最后:技术人的春天总会来
今天写下这篇文章时,窗外又是成都熟悉的阴天。但我的心情完全不同了。就在昨天,我收到了另一家大厂的offer,月薪22k,还是远程办公。HR问我为什么选择他们,我说:“因为我用FastAPI给他们做了个竞品分析API,你们的产品经理试用后觉得不错。”
她笑了:“你还真是会推销自己。”
其实哪有什么推销,不过是把学到的东西,用最直接的方式展现出来罢了。
如果你正在焦虑、迷茫,觉得自己不如别人,我想告诉你:技术世界很大,不止一条路能走通。Springboot是路,FastAPI也是路;Java是路,Python也是路。重要的是,你得先迈出第一步,哪怕是从一个小小的爬虫开始。
FastAPI不会让你一夜暴富,但它能给你一个机会——一个证明自己“能干活”的机会。而在这个行业,能干活,比什么都重要。
共勉。
—— 小林,一个刚在成都安顿下来的普通程序员
2024年4月于高新区出租屋

评论 0