为什么Python后端开发新手都应该试试FastAPI?
大家好,我是一个维护过多个开源项目的后端工程师,也带过不少刚入门的新人。今天想和大家聊聊 FastAPI —— 这个让我从 Java 和 Go 转向 Python 后端开发的重要工具。
我当初学后端开发的时候,用的是 Java Spring Boot,后来因为项目需要接触了 Go 的 Gin 框架。它们都很强大,但对新手来说门槛不低。直到我第一次尝试 FastAPI,才真正体会到“写得少、跑得快、文档自动生成”是什么感觉。如果你是零基础的小白,又想快速做出一个能用的后端接口(比如给爬虫提供数据服务),那 FastAPI 绝对是你该试试的第一站。
一、FastAPI 是什么?它能做什么?
简单说:FastAPI 是一个用 Python 写的现代 Web 框架,专门用来快速构建 API(应用程序接口)。
- 它“快”:性能接近 Go 和 Node.js,远超传统 Python 框架(如 Flask、Django)。
- 它“智能”:自动校验请求参数,还能自动生成交互式文档(不用你手写!)。
- 它“简单”:几行代码就能启动一个 HTTP 接口,非常适合做微服务、爬虫后端、AI 模型部署等场景。
💡 举个实际例子:你想写一个爬虫,抓取天气数据,但又希望别人通过网页或 App 来查询。这时,你可以用 FastAPI 做一个
/weather接口,爬虫把数据存进去,用户通过浏览器访问就能拿到结果。
二、环境准备:5 分钟搭好开发环境
别担心,安装过程比泡面还快。你只需要:
- 安装 Python(建议 3.8+)
- 安装 FastAPI 和一个服务器(我们用 Uvicorn)
打开终端(Windows 用 CMD 或 PowerShell,Mac/Linux 用 Terminal),依次执行:
# 创建虚拟环境(推荐,避免包冲突)
python -m venv fastapi-env
# 激活虚拟环境
# Windows:
fastapi-env\Scripts\activate
# Mac/Linux:
source fastapi-env/bin/activate
# 安装 FastAPI 和 Uvicorn
pip install fastapi uvicorn
验证是否成功:
python -c "import fastapi; print('FastAPI 安装成功!')"
如果没报错,恭喜你,环境就绪!
三、核心概念:用“人话”讲清楚
很多教程一上来就讲“依赖注入”“Pydantic模型”,新手容易懵。我们换个方式:
1. “路由” = 网址路径
比如你访问 http://localhost:8000/hello,这个 /hello 就是路由。FastAPI 会根据它决定运行哪段代码。
2. “函数” = 处理请求的逻辑
每个路由对应一个 Python 函数。函数返回什么,浏览器就看到什么。
3. “自动文档” = Swagger UI
启动服务后,访问 /docs,你会看到一个漂亮的界面,能直接测试你的 API —— 这是 FastAPI 自带的,不用额外配置!
4. “类型提示” = 让代码更安全
FastAPI 利用 Python 的类型注解(比如 name: str)自动检查用户输入是否合法。输错了?它会直接告诉你哪里不对。
四、实战:做一个简单的“图书查询”接口
现在,我们一步步做一个小项目:用户传入书名,返回书籍信息。虽然简单,但涵盖了 FastAPI 的核心用法。
第 1 步:创建 main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def home():
return {"message": "欢迎使用图书查询系统!"}
保存后,在终端运行:
uvicorn main:app --reload
main是文件名(main.py)app是代码里的变量名--reload表示代码修改后自动重启(开发时超实用!)
打开浏览器,访问 http://localhost:8000,你会看到:
{"message": "欢迎使用图书查询系统!"}
再访问 http://localhost:8000/docs,你会看到自动生成的文档页面!
第 2 步:添加查询接口
我们模拟一个“数据库”(其实是个字典),然后根据书名查信息:
from fastapi import FastAPI
app = FastAPI()
# 模拟数据库
books_db = {
"三体": {"author": "刘慈欣", "year": 2006},
"活着": {"author": "余华", "year": 1993},
"Python编程": {"author": "Guido van Rossum", "year": 1991}
}
@app.get("/book/{title}")
def get_book(title: str):
if title in books_db:
return {"title": title, **books_db[title]}
return {"error": "未找到该书籍"}
现在访问 http://localhost:8000/book/三体,你会得到:
{"title": "三体", "author": "刘慈欣", "year": 2006}
🔍 注意:
{title}是路径参数,FastAPI 会自动把它传给函数的title参数,并检查类型是否为字符串。
第 3 步:加入请求体(POST 请求)
有时候用户要提交复杂数据(比如新增一本书),这时候用 POST 更合适。
先安装 Pydantic(FastAPI 默认依赖它):
pip install pydantic
然后扩展代码:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class BookCreate(BaseModel):
title: str
author: str
year: int
books_db = {}
@app.post("/book/")
def add_book(book: BookCreate):
books_db[book.title] = book.dict()
return {"message": f"已添加《{book.title}》"}
在 /docs 页面,点击 “POST /book/” → “Try it out”,输入:
{
"title": "FastAPI实战",
"author": "张三",
"year": 2024
}
点击“Execute”,你就成功添加了一本书!
✅ 实战经验:这种结构特别适合做爬虫的后端接收端 —— 爬虫抓到数据后,直接 POST 到你的 FastAPI 接口,存入数据库或缓存。
五、新手常见问题解答
Q1:FastAPI 和 Flask/Django 有什么区别?
| 框架 | 学习难度 | 性能 | 自动生成文档 | 适合场景 |
|---|---|---|---|---|
| Flask | 简单 | 中等 | ❌ | 小型项目、教学 |
| Django | 较难 | 中等 | ❌(需插件) | 全功能网站(带后台) |
| FastAPI | 简单 | 高 | ✅ | API、微服务、AI部署 |
我当初从 Flask 转 FastAPI,只用了半天就上手了,而且再也不用手写 API 文档了!
Q2:为什么我的代码改了没生效?
确保你加了 --reload 参数启动:
uvicorn main:app --reload
否则每次改代码都要手动重启。
Q3:能连接真实数据库吗?
当然可以!FastAPI 本身不包含 ORM,但你可以轻松集成:
- SQLAlchemy(通用)
- Tortoise ORM(异步,类似 Django)
- 直接用
asyncpg(PostgreSQL)
不过对新手,建议先用字典或 JSON 文件模拟,等熟悉后再接入数据库。
Q4:和 Java/Go 比,Python 做后端会不会太慢?
这是个好问题。确实,Java 和 Go 在高并发下性能更强。但 FastAPI 基于 ASGI,支持异步,在 I/O 密集型场景(如调用数据库、爬虫、外部 API)中,性能非常接近 Go。
而且,开发效率高得多!你用 Java 写 50 行的功能,FastAPI 可能 5 行就搞定。对于大多数中小型项目,FastAPI 完全够用。
六、学习建议:下一步怎么走?
- 先掌握基础路由、参数、请求体
- 多写几个小接口,比如天气查询、用户注册
- 学习异步(async/await)
- FastAPI 支持异步,能大幅提升爬虫或 API 调用的效率
- 集成数据库
- 从 SQLite 开始,再过渡到 PostgreSQL
- 部署上线
- 用 Docker 打包,部署到云服务器(如阿里云、Vercel、Railway)
- 结合爬虫实战
- 用 FastAPI 提供接口,Scrapy 或 requests 抓数据,形成完整闭环
🚫 避坑指南:不要一开始就学“JWT认证”“中间件”“依赖注入”这些高级概念。先把“能跑起来”放在第一位!
结语
FastAPI 是我近年来最推荐给新手的 Python 后端框架。它不像 Java Spring 那样配置复杂,也不像 Go 那样需要理解指针和并发模型。你只需要会一点 Python 基础,就能在 10 分钟内写出一个带文档的 API。
无论你是想做爬虫后端、AI 模型服务,还是练手 Web 开发,FastAPI 都是绝佳起点。现在就去创建你的 main.py 吧 —— 你离第一个 API,只差一行 uvicorn main:app --reload。
有问题?欢迎在评论区留言。作为过来人,我很乐意帮你避开我当年踩过的坑!

评论 0