FastAPI入门:Python后端开发新手指南
开篇:FastAPI是什么,用来做什么?

在开始学习之前,我们先来看看什么是FastAPI?简单来说,它是Python世界中用于创建**Web服务接口(API)**的一个框架。你可以把它想象成一个“厨房工具箱”,里面装满了专门做菜的工具——只不过这里我们做的不是饭,而是可以让别人访问你程序功能的“网页小窗口”。
比如,你想写一个天气预报小程序,别人输入城市名就能看到天气信息,那这个“输入城市名并获取结果”的过程,就是通过API实现的。而FastAPI就是让你能快速搭建这样接口的好帮手!
它有几个特别吸引人的优点:
- 速度快:性能可以媲美Go和Node.js
- 代码简洁:用Python就可以写出强大功能
- 自动生成文档:它能自动给你生成漂亮的API说明页面(省去大量写文档的时间)
- 适合初学者但不肤浅:既能轻松上手,又能满足实际项目需求
所以如果你是零基础想学后端开发,又希望掌握实用且现代的技术,那么FastAPI是一个非常适合的切入点。
环境准备:让电脑准备好开工!

我们要开始写代码了!首先,你需要给电脑安装好必要的软件。别担心,这一部分我们会一步步带你走完。
1. 安装 Python
FastAPI 是基于 Python 的,所以第一步当然要确保你的电脑上安装好了 Python。
Windows系统:
- 访问官网下载:https://www.python.org
- 下载最新的稳定版本(推荐3.9或更新的版本)
- 安装时请勾选 “Add to PATH” 选项
Mac用户:
Mac自带Python,但我们建议使用 pyenv 或 Homebrew 来管理多个版本。
Linux用户:
大多数Linux发行版已经安装了Python,你可以使用终端检查版本:
python --version
如果提示未找到命令,请尝试:
python3 --version
如果没有安装Python,请自行搜索如何在你的Linux系统上安装最新Python(通常很简单)。
2. 创建虚拟环境(可选但强烈建议)
我们可以为我们的FastAPI项目单独创建一个“隔离空间”——这就是所谓的虚拟环境。这样不会影响别的Python项目。
# 创建一个叫 my_fastapi_env 的虚拟环境
python -m venv my_fastapi_env
# 激活虚拟环境(Windows)
my_fastapi_env\Scripts\activate.bat
# 激活虚拟环境(Mac/Linux)
source my_fastapi_env/bin/activate
激活之后,你会看到命令行前面出现一个 (my_fastapi_env) 的前缀,表示你现在在这个环境里。
3. 安装 FastAPI 和 Uvicorn(服务器)
接下来我们要安装两个重要组件:
- FastAPI:构建API的核心库
- Uvicorn:运行FastAPI应用的ASGI服务器(就像一个能让你的网站跑起来的“启动器”)
pip install fastapi uvicorn
🎉 好了!现在你的电脑已经准备好开始开发FastAPI项目啦!
核心概念讲解:最简单的语言说清楚最难懂的概念
1. API 是什么?为什么重要?
API全称叫做 Application Programming Interface(应用程序编程接口),听上去有点吓人,其实你可以理解成一种“沟通方式”——就像点菜和服务员对话一样。
举个例子:你打开微信发一条消息,背后的微信服务器是怎么知道你要发送这条内容的呢?这就要靠它的API来完成通信。
API的作用就是让我们写的程序可以和其他程序交换数据和功能。
FastAPI 就是用来帮你快速写出这些“对话接口”的工具。
2. 请求方法(HTTP Methods)
常见的几种请求方式:
| 方法 | 用途 | 类似于 |
|---|---|---|
| GET | 获取数据 | 查看文章 |
| POST | 提交数据 | 发送表单、添加内容 |
| PUT | 更新数据 | 修改某个条目 |
| DELETE | 删除数据 | 删除一条记录 |
在FastAPI中,每个方法都有对应的函数装饰器(Decorator),比如:
from fastapi import FastAPI
app = FastAPI()
@app.get("/") # 当有人访问 "/" 路径时,会执行这个函数
def read_root():
return {"message": "Hello, World!"}
@app.post("/submit") # 接收提交数据
def submit_data():
return {"status": "Data received"}
3. 路由(Router)
路由指的是URL路径。你访问不同的URL,程序就会做出不同的响应。
比如:
/users:查看所有用户/users/1:查看ID为1的用户/users/1/edit:编辑ID为1的用户
FastAPI 通过函数注解的方式设置路由非常直观,比如:
@app.get("/items/{item_id}")
def get_item(item_id: int):
return {"id": item_id, "name": "Item " + str(item_id)}
当你访问 /items/5 时,会返回:
{"id": 5, "name": "Item 5"}
是不是很像在写函数?
4. 数据模型与Pydantic
有时候我们需要接收结构化的数据,例如一个用户的注册信息(用户名、密码、邮箱等)。这时候我们就可以使用 Pydantic模型,这是FastAPI内置的一个数据验证模块。
示例:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class UserCreate(BaseModel):
username: str
password: str
email: str
@app.post("/register")
def register_user(user: UserCreate):
return {
"message": "User registered",
"username": user.username,
"email": user.email
}
当你调用这个接口时,必须传入包含这三个字段的数据,否则FastAPI会自动报错,并告诉你缺了哪个字段。
5. 自动生成文档界面
FastAPI 最棒的功能之一就是它会自动生成API文档,无需手动编写!
运行以下命令启动服务:
uvicorn main:app --reload
然后访问下面两个链接,你会看到漂亮的交互式文档界面:
- Swagger UI(常用):http://127.0.0.1:8000/docs
- Redoc(另一个风格):http://127.0.0.1:8000/redoc
你可以在界面上直接测试每一个API接口!
实战项目:从零开始搭建一个简易笔记应用 📝
为了帮助你真正动手实践,下面我们一起来做一个简单的“笔记管理”系统。
功能目标:
- 创建笔记(POST)
- 查看所有笔记(GET)
- 查看指定笔记(GET /{note_id})
- 删除笔记(DELETE)
第一步:初始化项目文件夹结构
创建一个项目目录,比如 fastapi-notes-app,并在其中新建一个文件 main.py。
结构如下:
fastapi-notes-app/
└── main.py
第二步:定义数据模型
我们将使用一个内存中的列表来保存笔记数据。同时定义一个笔记的Pydantic模型。
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI()
# 笔记数据模型
class NoteBase(BaseModel):
title: str
content: str
class Note(NoteBase):
id: int
notes = []
next_id = 1
第三步:添加API接口
现在我们来逐步添加API。
创建笔记:POST
@app.post("/notes", response_model=Note)
def create_note(note: NoteBase):
global next_id
new_note = Note(id=next_id, **note.dict())
notes.append(new_note)
next_id += 1
return new_note
查看所有笔记:GET
@app.get("/notes", response_model=List[Note])
def get_notes():
return notes
查看指定笔记:GET /{note_id}
from fastapi import HTTPException
@app.get("/notes/{note_id}", response_model=Note)
def get_note(note_id: int):
for note in notes:
if note.id == note_id:
return note
raise HTTPException(status_code=404, detail="Note not found")

删除笔记:DELETE
@app.delete("/notes/{note_id}")
def delete_note(note_id: int):
for idx, note in enumerate(notes):
if note.id == note_id:
del notes[idx]
return {"message": "Note deleted"}
raise HTTPException(status_code=404, detail="Note not found")
第四步:运行项目并测试接口
保存文件后,在终端运行:
uvicorn main:app --reload
然后访问 http://localhost:8000/docs 进入Swagger文档界面,点击任意一个接口进行测试!
比如你可以试试:
- 在
/notes接口点击【Try it out】 ➤ 输入标题和内容 ➤ Execute - 再用 GET
/notes查看你刚添加的笔记 - 用 DELETE 删除某条笔记试试看
常见问题解答 🧐
Q1:启动时报错:No module named 'fastapi'
这说明没有正确安装 FastAPI。请确认你在虚拟环境中,并运行:
pip install fastapi uvicorn
Q2:访问 localhost:8000 返回 404
这是因为你还没有定义根路径(如 @app.get("/")),或者写错了URL。请检查代码中是否有拼写错误。
Q3:文档页面无法访问怎么办?
确认你的服务是否正在运行(终端应该显示 Server running on...)。如果不是,请重新运行:
uvicorn main:app --reload
Q4:我怎么传递数组或者复杂数据?
使用 Pydantic 模型,你可以很方便地处理嵌套数据结构。例如:
class UserInfo(BaseModel):
name: str
hobbies: List[str]
@app.post("/user")
def create_user(user: UserInfo):
return user
学习建议:下一步怎么继续进阶?
恭喜你完成了第一个FastAPI应用!但这只是刚开始,真正的后端世界还有很多好玩的东西等着你去探索。
下面是一些推荐的学习方向:
✅ 推荐学习顺序:
数据库连接
- 使用SQLAlchemy操作PostgreSQL或SQLite
- ORM概念初步了解
- 参考官方教程或SQLModel(更轻量级ORM)
身份认证与权限控制
- 用户登录、JWT令牌、Token验证
- 使用OAuth2协议
部署上线
- 使用Docker打包应用
- 部署到云平台(如Vercel、Render、阿里云等)
异步编程
- 使用async def定义API函数
- 更高效处理并发请求
前端对接
- 使用JavaScript+Fetch或Axios调用API
- 搭配React/Vue/Angular练习前后端分离
📚 推荐学习资源:
| 资源类型 | 名称 | 地址 |
|---|---|---|
| 官方文档 | FastAPI Documentation | https://fastapi.tiangolo.com |
| 中文社区 | FastAPI中文网 | https://fastapi.xiaomotou.com |
| 教程视频 | Bilibili相关课程 | 搜索“FastAPI入门” |
| 书籍推荐 | 《FastAPI实战》 | 可搜索电子版或纸质书 |
💡 学习建议总结:
- 多写多练,不要怕出错,出错才是进步的机会
- 尝试将本项目扩展,比如加入分类标签、修改笔记功能等
- 加入开发者社群,分享经验、提问交流
结语 🎉
恭喜你读到了最后!
从你阅读这篇文章那一刻起,你就已经成为一名后端开发者了。虽然刚刚起步,但你已经有了构建API的能力,甚至已经开始理解一些专业的概念,这非常了不起!
记住一句话:“编程不是学会的,是练出来的”。希望你能跟着这篇教程一直练下去,未来有一天成为真正的技术高手,写出属于自己的伟大作品!
如果你喜欢这样的教学风格,欢迎点赞、收藏、转发,让更多同学也能接触到这项有趣的技术 😊

评论 0