FastAPI入门:Python后端开发新手也能上手的实战指南
大家好,我是小林,一名211高校计算机专业的研究生。平时喜欢在技术博客里写点教程,帮助刚入门的同学少走弯路。最近很多学弟学妹问我:“怎么用 Python 写一个能被前端调用的接口?”“简历上写‘熟悉后端开发’到底要会什么?”于是,我决定写这篇 FastAPI 入门教程——它简单、高效,特别适合零基础同学快速做出一个可展示的“产品”,还能放进你的技术分享或简历项目中。
我当初学后端时,光看理论文档根本不知道怎么动手。所以这篇文章完全以 实践驱动,你只需要会一点 Python 基础(比如知道 def 是定义函数),就能跟着一步步做出一个真正的 API 服务!
为什么选 FastAPI?
FastAPI 是一个现代、高性能的 Python Web 框架,用于构建 API。它的优势对新手非常友好:
- 自动文档生成:写完代码,自动生成交互式 API 文档(Swagger UI)
- 类型提示支持:用 Python 的类型注解(Type Hints)就能自动校验数据
- 异步支持:天然支持
async/await,性能高 - 学习曲线平缓:比 Flask 更结构化,比 Django 更轻量
更重要的是——你花一小时就能做出一个能跑的后端服务,这对丰富简历、参加面试、做课程设计都极有帮助。
第一步:搭建开发环境
我们先装好“工具箱”。别担心,只需三步:
1. 确保安装了 Python(3.7+)
在终端运行:
python --version
# 或
python3 --version
如果没安装,请去 python.org 下载。
2. 创建虚拟环境(推荐)
虚拟环境能避免包冲突,是专业开发的标配:
python -m venv fastapi_env
source fastapi_env/bin/activate # Linux/Mac
# Windows 用户用:fastapi_env\Scripts\activate
3. 安装 FastAPI 和 Uvicorn
Uvicorn 是一个 ASGI 服务器,用来运行 FastAPI 应用:
pip install fastapi uvicorn[standard]
💡 避坑提示:不要直接
pip install fastapi就完事!一定要装uvicorn[standard],否则运行会报错。
第二步:你的第一个 FastAPI 程序
新建一个文件 main.py,输入以下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def home():
return {"message": "Hello, FastAPI 新手!"}
然后在终端运行:
uvicorn main:app --reload
看到类似输出就说明成功了:
INFO: Uvicorn running on http://127.0.0.1:8000
打开浏览器访问 http://127.0.0.1:8000,你会看到:
{"message": "Hello, FastAPI 新手!"}
更神奇的是,访问 http://127.0.0.1:8000/docs,你会看到自动生成的 交互式 API 文档!这就是 FastAPI 的魅力。
第三步:理解核心概念(用大白话)
什么是“路由”?
就是 URL 路径。比如 /users、/products。在 FastAPI 中,用装饰器 @app.get()、@app.post() 来定义。
什么是“请求方法”?
GET:获取数据(如查询用户信息)POST:提交数据(如注册新用户)PUT/DELETE:更新或删除
什么是“路径参数”和“查询参数”?
- 路径参数:直接写在 URL 路径里,比如
/users/123中的123 - 查询参数:写在
?后面,比如/search?q=python
来看例子:
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
访问 /items/5?q=hello,返回:
{"item_id": 5, "q": "hello"}
注意:item_id: int 表示 FastAPI 会自动把字符串 "5" 转成整数 5,如果传了 "abc",会直接返回错误——不用你自己写校验逻辑!
第四步:做一个迷你“产品”:待办事项 API
现在,我们来做一个真实的、可展示的小项目——一个简单的待办事项(Todo)管理 API。这个项目足够放进你的简历或技术分享!
功能需求
- 查看所有待办事项(GET)
- 添加新待办事项(POST)
- 根据 ID 获取单个事项(GET)
1. 定义数据模型
FastAPI 用 Pydantic 模型来定义数据结构。新建 main.py(覆盖之前的):
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI()
# 定义 Todo 数据模型
class Todo(BaseModel):
id: int
title: str
completed: bool = False
# 模拟数据库(实际项目用数据库,这里简化)
todos = [
Todo(id=1, title="学习 FastAPI", completed=True),
Todo(id=2, title="写简历项目", completed=False)
]
# 获取所有 todos
@app.get("/todos", response_model=List[Todo])
def get_todos():
return todos
# 根据 ID 获取 todo
@app.get("/todos/{todo_id}", response_model=Todo)
def get_todo(todo_id: int):
for todo in todos:
if todo.id == todo_id:
return todo
return {"error": "Not found"}
# 添加新 todo
@app.post("/todos", response_model=Todo)
def create_todo(todo: Todo):
todos.append(todo)
return todo
2. 测试你的 API
运行:
uvicorn main:app --reload
打开 http://127.0.0.1:8000/docs,你会看到三个接口,还能直接在网页上测试!
比如点击 POST /todos,填入:
{
"id": 3,
"title": "部署到服务器",
"completed": false
}
点击“Execute”,就能看到返回结果,同时 GET /todos 也会包含这条新数据。
✅ 恭喜!你已经做出了一个完整的后端“产品”原型!
第五步:新手常见问题解答
| 问题 | 解决方案 |
|---|---|
运行报错 ModuleNotFoundError |
检查是否激活了虚拟环境,是否安装了 fastapi 和 uvicorn |
| 修改代码后没生效 | 确保启动时加了 --reload 参数 |
| POST 请求收不到 JSON 数据 | 确保前端发送的是 Content-Type: application/json |
| 如何处理数据库? | 初学者可用 SQLite + SQLAlchemy,后续可学 ORM |
| 能部署上线吗? | 可以!用 Vercel、Render 或阿里云轻量服务器,几行命令搞定 |
第六步:下一步学习建议
你已经掌握了 FastAPI 的基础,接下来可以:
- 加入数据库:学习使用 SQLAlchemy 或 Tortoise-ORM 连接 SQLite/PostgreSQL
- 添加用户认证:实现登录、注册、JWT 鉴权
- 写单元测试:用
pytest测试你的 API - 部署上线:将项目部署到免费平台(如 Render),获得真实 URL
- 丰富简历:把这个项目写进简历的“个人项目”栏,描述为:“基于 FastAPI 的 RESTful 待办事项 API,支持 CRUD 操作,含自动生成文档”
📌 我的经验:我研一面试时,就把类似的 FastAPI 项目放进简历,面试官当场让我现场改接口,我顺利通过——因为真的自己写过、调试过。
结语:从“会用”到“会讲”
技术的价值不仅在于“会写”,更在于“能讲清楚”。当你能向别人解释 FastAPI 的自动文档、类型校验、异步支持时,你就真正掌握了它。
这篇教程虽然只有几百行代码,但背后是现代后端开发的核心思想:用最少的代码,做最可靠的产品。
如果你觉得有帮助,欢迎在我的技术博客留言交流。也别忘了把今天做的 Todo API 上传到 GitHub,下次面试时,你可以自信地说:“这是我自己写的后端服务。”
加油,未来的后端工程师!🚀

评论 0