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

你可能听说过“网站的前端”和“网站的后端”。前端指的是用户看到、交互的那一部分,比如按钮、页面布局等。而后端则是负责处理这些操作的部分,例如存储用户登录信息、提供数据接口等等。
FastAPI 就是这样一个用于构建后端服务(也就是Web API)的 Python 框架。它的主要特点是:
- 🐍 基于Python语言:使用简单易学的Python语法来编写代码。
- ⚡ 速度快:比一些传统框架如 Flask 更快,接近 Node.js 的性能。
- 🔑 自带文档系统:你写完接口以后,FastAPI会自动生成漂亮的在线文档,方便调试和交流。
- 📦 现代特性:支持异步编程,适合处理高并发场景。
在本教程中,我们将从零开始教你如何安装和使用 FastAPI,完成一个简单的项目,并解答你在学习过程中可能遇到的问题。
环境准备:一步步搭建开发环境

在开始编码之前,我们先准备好开发环境。这一步是很多初学者容易卡住的地方,但别担心,只要按照步骤一步步来,就不会出问题。
1. 安装 Python
首先确保你的电脑上已经安装了 Python。你可以通过终端(Windows 是命令提示符或 PowerShell)输入以下命令查看是否已安装 Python:
python --version
或者:
python3 --version
如果你看到类似 Python 3.9.1 或更高版本的输出,那说明你已经安装好了 Python。如果没有,请前往 Python官网 下载并安装最新稳定版的 Python。
💡 提示:Mac 和 Linux 用户一般默认有 Python,但建议安装最新的 Python 3.x 版本。
2. 创建虚拟环境(推荐)
为了保持我们的项目依赖独立,推荐使用 Python 自带的 venv 来创建一个虚拟环境。
打开命令行工具,在你喜欢的目录下执行以下命令:
python -m venv fastapi_env
然后激活这个虚拟环境:
- Windows 上运行:
fastapi_env\Scripts\activate
- macOS/Linux 上运行:
source fastapi_env/bin/activate
你现在应该看到命令行前面多了 (fastapi_env) 的前缀,表示你已经进入了一个隔离的开发环境。
3. 安装 FastAPI 和 Uvicorn
FastAPI 本身只是一个框架,我们需要用一个叫做 Uvicorn 的服务器来启动它。
在激活的虚拟环境中,运行以下命令安装必要的包:
pip install fastapi uvicorn
等待安装完成后,就可以正式开始编写你的第一个 FastAPI 应用了!
核心概念讲解:从最基础的说起
在真正开始写代码前,让我们先了解几个最重要的概念。理解这些概念,会让你更容易跟上后面的实践内容。
🌟 FastAPI 应用的基本结构
FastAPI 的核心是一个应用对象,通常我们会创建一个名为 app 的变量来表示它。
from fastapi import FastAPI
app = FastAPI()
这段代码导入了 FastAPI 类,并创建了一个实例 app,这就是我们整个 Web 服务的核心对象。
📬 路由(Routing)
路由决定了用户访问哪个地址时,执行哪一段代码。例如:
- 访问
/hello返回一句问候语; - 访问
/users/123返回用户编号为 123 的信息;
FastAPI 使用装饰器语法将函数与 URL 路径绑定起来,非常直观。
举个例子:
@app.get("/")
def read_root():
return {"message": "Hello, World!"}
这个函数的意思是:
- 当有人访问根路径(
/); - 并且使用 HTTP 的 GET 方法;
- 就返回一个 JSON 对象:
{"message": "Hello, World!"}
你可以测试一下效果。先把这个代码保存为 main.py,然后在命令行运行:
uvicorn main:app --reload
解释一下这个命令:
uvicorn:我们要使用的服务器;main:app:表示我们要加载main.py文件中的app实例;--reload:开启热重载功能,在代码修改后自动重启服务,方便调试。
运行后,你会看到类似以下输出:
INFO: Uvicorn running on http://127.0.0.1:8000
现在打开浏览器,访问 http://localhost:8000,你应该能看到页面显示:
{
"message": "Hello, World!"
}
📄 自动生成的文档界面
FastAPI 非常贴心地提供了两个内置的 API 文档界面:
- Swagger UI: 访问 http://localhost:8000/docs
- Redoc: 访问 http://localhost:8000/redoc
这两个页面会自动列出你写的每一个 API 接口,并允许你直接点击“Try it out”进行测试。
这极大地简化了前后端联调的过程。
✅ 请求方法(HTTP Methods)
你可能听说过 GET、POST、PUT、DELETE 这些词,它们对应的就是客户端(浏览器、App、小程序等)向服务器发起请求的不同方式。
| 请求方法 | 含义 |
|---|---|
| GET | 获取资源 |
| POST | 提交新数据 |
| PUT | 更新已有数据 |
| DELETE | 删除数据 |
在 FastAPI 中,可以通过不同的装饰器来定义不同请求方式的接口:
@app.get("/items/")
async def read_items():
...
@app.post("/items/")
async def create_item():
...
@app.put("/items/{item_id}")
async def update_item(item_id: int):
...
@app.delete("/items/{item_id}")
async def delete_item(item_id: int):
...
这些方法可以让你根据业务需求灵活设计接口。
实战项目:做一个“学生信息管理系统”的基础 API
我们现在通过一个具体的项目,练习如何用 FastAPI 构建一个简单的数据接口。
项目目标
我们要实现一个简易的学生管理 API,包含以下功能:
- 查看所有学生 →
GET /students - 添加新学生 →
POST /students - 查看某个学生详情 →
GET /students/{student_id} - 删除某个学生 →
DELETE /students/{student_id}
第一步:创建项目文件
新建一个文件夹,比如叫 student_api,然后在里面创建一个 main.py 文件,作为主程序。
第二步:导入需要的模块并初始化 app
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional
app = FastAPI()
# 用于模拟数据库的数据结构
students_db = {
1: {"name": "张三", "age": 18, "grade": "高三"},
2: {"name": "李四", "age": 17, "grade": "高二"},
3: {"name": "王五", "age": 16, "grade": "高一"}
}
这里我们使用字典来模拟数据库中的学生数据。
第三步:定义模型类(Schema)
为了让提交的数据格式统一,我们可以使用 pydantic 提供的 BaseModel 来定义数据格式:
class StudentCreate(BaseModel):
name: str
age: int
grade: str
class StudentResponse(StudentCreate):
id: int
StudentCreate是添加学生时需要提交的数据;StudentResponse是返回给用户的完整数据。
第四步:编写各个 API 接口
1. 获取所有学生列表
@app.get("/students")
def get_students():
return students_db.values()
访问 /students 会返回当前所有的学生信息。
2. 添加新学生
@app.post("/students", response_model=StudentResponse)
def add_student(student: StudentCreate):
new_id = max(students_db.keys()) + 1 if students_db else 1
students_db[new_id] = student.dict()
return {"id": new_id, **student.dict()}
这里使用 response_model 告诉 FastAPI 我们希望返回的数据结构是 StudentResponse。
3. 获取某个学生的详细信息
@app.get("/students/{student_id}")
def get_student(student_id: int):
if student_id not in students_db:
return {"error": "Student not found"}
return students_db[student_id]
注意,这里的 {student_id} 是路径参数,FastAPI 会自动提取出来传给函数。
4. 删除某个学生
@app.delete("/students/{student_id}")
def delete_student(student_id: int):
if student_id in students_db:
del students_db[student_id]
return {"message": f"Student {student_id} deleted"}
return {"error": "Student not found"}
第五步:运行并测试 API
保存好以上代码后,在命令行启动服务:
uvicorn main:app --reload
然后打开 Swagger UI 页面:http://localhost:8000/docs
你应该能看到四个接口已经列出来了。你可以分别点击每个接口的 “Try it out” 按钮来发送请求。
✅ 到此为止,我们就完成了一个基础的学生管理 API 的开发!
常见问题解答(FAQ)
在初学 FastAPI 时,常常会遇到以下几个问题:
❓Q1:为什么我的 API 返回的是 HTML 页面而不是 JSON 数据?
可能是你不小心访问了错误的路径,或者是没有正确定义响应类型。
- 确保你访问的是正确的 URL;
- 如果你希望明确指定返回 JSON 数据,可以使用
return {"key": "value"},FastAPI 默认就会以 JSON 形式返回; - 可以为接口加上
response_class=JSONResponse明确指定返回类型。
❓Q2:启动时报错 “ModuleNotFoundError: No module named ‘uvicorn’”
说明你没有正确安装依赖。请确保执行了如下命令:
pip install fastapi uvicorn
如果仍然报错,检查是否进入了正确的虚拟环境。
❓Q3:FastAPI 生成的文档页打不开,或者显示空白?
这种情况一般是因为网络问题,或者浏览器缓存导致。
尝试更换浏览器,或者访问 http://127.0.0.1:8000/docs(而不是 localhost)试试。
❓Q4:我想在 API 中接收中文参数怎么办?
FastAPI 默认支持 UTF-8 编码,可以直接接收中文参数,不需要额外设置。
例如:
@app.get("/search/{keyword}")
def search(keyword: str):
return {"keyword": keyword}
访问 /search/你好世界,就能正确接收到 “你好世界”。
❓Q5:FastAPI 支持连接真正的数据库吗?
当然支持!目前我们只是用了一个字典来临时保存数据,但在实际项目中,你可以结合 SQLAlchemy、Tortoise ORM 等库连接 MySQL、PostgreSQL 等真实数据库。
这是进阶学习的重要一步,我们在下一节会介绍学习路线。
学习建议:下一步该怎么学?
恭喜你完成了 FastAPI 的第一个项目!这是一个不错的起点,但要成为一名合格的后端开发者,还有许多技能需要掌握。
以下是学习建议的进阶路径:
🔹 1. 掌握更多 FastAPI 功能
- 异步函数:
async def函数 - 请求验证与错误处理
- 路由分组与中间件
- 跨域设置(CORS)
- 表单和上传文件的处理
推荐阅读官方文档:FastAPI 官方中文文档
🔹 2. 学习数据库操作
FastAPI 本身不提供数据库支持,但它与各种 ORM 配合非常友好:
- 学习 SQLAlchemy(适合专业级应用)
- 尝试 Tortoise ORM(轻量级,更易上手)
- 练习将之前的内存字典替换为真实的数据库
🔹 3. 学习 RESTful API 设计规范
学会写出符合 REST 风格的 API,对团队协作非常重要:
- 如何命名 URL?
- 如何设计错误码?
- 如何分页查询?
推荐阅读书籍《RESTful Web APIs》
🔹 4. 学习部署上线基础知识
学会了本地开发后,你需要把项目部署到线上服务器:
- Docker 容器化打包
- Nginx + Uvicorn 配置
- 使用云平台(阿里云、腾讯云、Heroku 等)
🔹 5. 综合项目实战
尝试做一个完整的项目,比如:
- 博客系统
- 电商商品管理系统
- 在线考试系统
可以锻炼你的综合能力,同时积累作品集。
结语:继续前行吧,未来的后端工程师!

FastAPI 是一个非常适合初学者上手的后端框架,既强大又简单,既能快速开发原型,也能支撑起复杂的企业级应用。
学习编程就像学骑自行车——起初总是摇摇晃晃,但一旦掌握技巧,就能越骑越顺。希望这篇教程能成为你学习道路上的一盏灯塔,帮你少走弯路,轻松入门!
记得多写代码,多查资料,多动手练项目,坚持下去,你一定可以成为一名出色的 Python 后端开发者!
📌 附录:常用命令速查表
| 用途 | 命令 |
|---|---|
| 安装 FastAPI & Uvicorn | pip install fastapi uvicorn |
| 启动服务 | uvicorn main:app --reload |
| 检查 Python 版本 | python --version 或 python3 --version |
| 创建虚拟环境 | python -m venv myenv |
| 激活虚拟环境(Windows) | myenv\Scripts\activate |
| 激活虚拟环境(Linux/macOS) | source myenv/bin/activate |
祝你学习愉快,有问题欢迎随时提问!

评论 0