FastAPI入门:Python后端开发新手指南
大家好,我是掘金上常写教程的全栈工程师,985科班出身,也带过不少零基础转行的同学。最近很多初学者问我:“有没有一个简单、快速又能写出专业级接口的 Python 框架?”——答案就是 FastAPI。
我当初学后端时,用的是 Flask 和 Django,虽然功能强大,但配置复杂、学习曲线陡峭。直到接触 FastAPI,才真正体会到“现代 Python 后端开发”的流畅感:自动文档、类型提示、异步支持一应俱全,而且上手极快。今天,我就用一个完整的项目案例,带你从零搭建一个属于自己的 API 服务。
一、FastAPI 是什么?能做什么?
FastAPI 是一个现代化、高性能的 Python Web 框架,专为构建 API(应用程序接口)而设计。你可以把它理解为“帮你快速做出产品后端接口的工具”。
✅ 关键词解释:
- 产品:指你最终要交付的应用,比如一个天气查询 App、一个待办事项网站。
- 工具:指开发过程中使用的软件或框架,FastAPI 就是这样一个高效开发后端接口的工具。
FastAPI 的核心优势:
- 自动生成交互式 API 文档(Swagger UI + ReDoc)
- 基于 Python 类型提示(Type Hints),代码更安全、更易读
- 支持异步(async/await),性能接近 Node.js 或 Go
- 学习成本低,10 行代码就能跑起一个接口
二、环境准备:5 分钟搭好开发环境
步骤 1:安装 Python(3.7+)
确保你的电脑已安装 Python 3.7 或更高版本。在终端输入:
python --version
# 或
python3 --version
如果未安装,请前往 python.org 下载。
步骤 2:创建虚拟环境(推荐)
虚拟环境能隔离项目依赖,避免“这个项目装了 A 包,那个项目装了 B 包”导致冲突。
# 创建虚拟环境(名字叫 fastapi-env)
python -m venv fastapi-env
# 激活虚拟环境
# Windows:
fastapi-env\Scripts\activate
# macOS/Linux:
source fastapi-env/bin/activate
看到命令行前缀变成 (fastapi-env) 就表示激活成功。
步骤 3:安装 FastAPI 和 Uvicorn
FastAPI 本身不包含服务器,需要搭配 ASGI 服务器(如 Uvicorn)运行。
pip install fastapi uvicorn
💡 小知识:Uvicorn 是一个超快的 ASGI 服务器,专门用来运行 FastAPI、Starlette 等现代 Python Web 应用。
三、核心概念:用最简单的语言讲清楚
1. 路由(Route)
路由 = URL 路径 + 处理函数。比如 /hello 对应一个返回 "Hello World" 的函数。
2. 请求方法(HTTP Methods)
常见的有:
GET:获取数据(如查天气)POST:提交数据(如注册用户)PUT/DELETE:更新或删除数据
3. Pydantic 模型(数据验证工具)
FastAPI 使用 Pydantic 来定义请求/响应的数据结构,并自动校验类型。这是它能自动生成文档和保证数据安全的关键。
4. 自动文档(你的调试神器)
启动项目后,访问:
http://127.0.0.1:8000/docs→ Swagger UI(可交互测试)http://127.0.0.1:8000/redoc→ ReDoc(美观文档)
这两个页面不需要你写一行文档代码,全是自动生成的!
四、实战项目:做一个“待办事项(Todo)管理”API
我们将用 FastAPI 实现一个简易 Todo 产品后端,支持:
- 查看所有任务(GET)
- 添加新任务(POST)
- 根据 ID 查看单个任务(GET)
- 删除任务(DELETE)
🎯 目标:让你理解如何用 FastAPI 构建真实产品的后端接口。
第一步:创建主文件 main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def home():
return {"message": "欢迎使用我的 Todo API!"}
第二步:定义数据模型(使用 Pydantic)
在 main.py 中添加:
from pydantic import BaseModel
from typing import Optional
class TodoItem(BaseModel):
id: int
title: str
completed: bool = False # 默认未完成
🔍 注意:
BaseModel是 Pydantic 提供的基类,FastAPI 会自动根据这个类生成请求/响应的 JSON 结构。
第三步:模拟数据库(用列表代替)
为了简化,我们用一个 Python 列表当“数据库”:
# 模拟数据库
todos = [
{"id": 1, "title": "学习 FastAPI", "completed": True},
{"id": 2, "title": "写一篇教程", "completed": False}
]
第四步:实现 API 接口
1. 获取所有任务(GET /todos)
@app.get("/todos")
def get_todos():
return todos
2. 获取单个任务(GET /todos/{todo_id})
@app.get("/todos/{todo_id}")
def get_todo(todo_id: int):
for todo in todos:
if todo["id"] == todo_id:
return todo
return {"error": "任务未找到"}
3. 添加新任务(POST /todos)
@app.post("/todos")
def create_todo(item: TodoItem):
# 检查 ID 是否重复
for todo in todos:
if todo["id"] == item.id:
return {"error": "ID 已存在"}
todos.append(item.dict()) # .dict() 转为字典
return item
4. 删除任务(DELETE /todos/{todo_id})
@app.delete("/todos/{todo_id}")
def delete_todo(todo_id: int):
for i, todo in enumerate(todos):
if todo["id"] == todo_id:
todos.pop(i)
return {"message": "删除成功"}
return {"error": "任务未找到"}
第五步:运行项目
在终端执行:
uvicorn main:app --reload
main:app表示:从main.py文件中加载app对象--reload表示:代码修改后自动重启(开发时超实用!)
启动成功后,你会看到:
INFO: Uvicorn running on http://127.0.0.1:8000
第六步:测试你的 API
- 打开浏览器访问
http://127.0.0.1:8000/docs - 你会看到自动生成的 Swagger 文档
- 点击 “Try it out” → 填参数 → Execute,即可测试每个接口!
例如,测试 POST /todos:
{
"id": 3,
"title": "部署到服务器",
"completed": false
}
点击 Execute,返回结果就是你刚添加的任务!
五、新手常见问题解答(FAQ)
| 问题 | 解答 |
|---|---|
为什么 uvicorn 报错找不到? |
确保你在虚拟环境中,并且已执行 pip install uvicorn |
| 中文乱码怎么办? | FastAPI 默认返回 UTF-8,一般不会乱码。若前端显示异常,检查前端编码设置 |
| 如何接收 URL 参数? | 用 {参数名} 即可,如 /todos/{todo_id},函数参数写 todo_id: int |
| 如何接收 JSON 请求体? | 直接用 Pydantic 模型作为函数参数,如 item: TodoItem |
| 能不能连接真实数据库? | 当然可以!后续可集成 SQLAlchemy 或 TortoiseORM |
⚠️ 避坑指南:不要在生产环境用列表当数据库!这只是教学演示。真实项目要用 SQLite、PostgreSQL 等。
六、学习建议:下一步怎么走?
你已经迈出了关键一步!接下来我建议:
巩固基础
- 多练习不同 HTTP 方法(PUT、PATCH)
- 学习路径参数、查询参数、请求体的区别
进阶功能
- 添加身份验证(OAuth2、JWT)
- 连接数据库(推荐使用 SQLAlchemy + databases)
- 部署到云服务器(Vercel、Render、阿里云)
阅读官方文档
FastAPI 官方文档是全网最好的 Python 框架文档之一,图文并茂,强烈推荐:https://fastapi.tiangolo.com做个小产品
比如:天气 API(调用第三方接口)、短链接生成器、博客后端。只有做产品,才能真正掌握工具。
结语
FastAPI 不仅仅是一个框架,更是现代 Python 后端开发的“最佳实践集合”。它用类型提示保证安全,用自动生成文档提升效率,用异步支持应对高并发——这些正是一个优秀产品背后不可或缺的工具能力。
我当初学的时候,花了两周才搞懂 Flask 的蓝图和配置,而 FastAPI 第一天就让我做出了可演示的 API。希望这篇教程,也能成为你后端之路的加速器。
动手写代码,永远是最好的学习方式。现在,就去创建你的 main.py 吧!

评论 0