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

你可能已经听说过像 Django 或 Flask 这样的 Python Web 框架,而今天我们来认识一个更现代、性能更高的框架 —— FastAPI。
FastAPI 是一个现代的、快速(高性能)的 Web 框架,专为构建 API 服务而设计。它是基于 Python 3.6+ 的异步特性,并且使用了类型提示(Type Hints)来提升代码质量和开发效率。
FastAPI 的主要特点:
- 🚀 高性能:接近 Node.js 和 Go 的性能。
- 💡 自动生成交互式文档(Swagger UI 和 ReDoc)。
- ✅ 强大的数据验证和错误处理机制。
- 🧠 使用 Python 类型提示让代码更加清晰、易于维护。
- 🔐 支持异步请求处理,适合处理高并发场景。
- 🛠 简洁的 API 设计,上手快。
它非常适合用来构建:
- RESTful API 接口
- 后端微服务
- 数据接口供前端调用
- 微信小程序或 App 的后台服务
如果你正在学习 Python 并想快速进入后端开发领域,FastAPI 是一个非常理想的选择。
环境准备:搭建你的开发环境

在开始编码之前,我们需要准备好开发环境。别担心,这一步其实很简单。
1. 安装 Python
确保你电脑上安装了 Python 3.7 或更高版本。
你可以通过终端(Mac/Linux)或命令行(Windows)输入以下命令检查是否安装成功:
python --version
如果显示类似 Python 3.10.4,就说明你已安装好 Python。
如果没有,请去官网下载安装包:https://www.python.org/
2. 创建虚拟环境
我们推荐使用虚拟环境来管理项目依赖,这样可以避免不同项目的库发生冲突。
打开终端(或 cmd),创建一个项目文件夹并进入:
mkdir fastapi_project
cd fastapi_project
然后创建虚拟环境:
python -m venv venv
激活虚拟环境:
- Windows:
venv\Scripts\activate
- Mac/Linux:
source venv/bin/activate
你激活后命令行前面会有 (venv) 的前缀,表示你现在处于一个独立的开发环境中。
3. 安装 FastAPI 和 Uvicorn
安装 FastAPI:
pip install fastapi
FastAPI 需要一个 ASGI 服务器来运行(类似于 Flask 中的 Flask 自带服务器)。我们这里选择的是 Uvicorn:
pip install uvicorn
✅ 到这里为止,你的开发环境已经搭建完成了!
核心概念:通俗讲解 FastAPI 基本术语

作为一个刚入门的同学,下面几个基础概念非常重要:
1. 路由(Route)
你可以把它理解为“网址”,比如你想访问一个页面,你会输入一个网址,如 /hello。
在 FastAPI 中,我们要给不同的网址绑定不同的功能(函数),这就是路由的作用。
举个例子:
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
def say_hello():
return {"message": "Hello, FastAPI!"}
这个代码的意思是:“当用户访问 /hello 地址时,执行 say_hello 函数”。
2. 请求方法(HTTP Methods)
常见的 HTTP 请求方法包括:
GET:获取数据,例如查看一篇文章。POST:提交数据,例如提交注册表单。PUT:更新数据,例如修改用户信息。DELETE:删除数据。
FastAPI 通过装饰器来指定请求方法:
@app.get("/data") # 获取数据
@app.post("/create") # 提交新数据
@app.put("/update/1") # 更新数据
@app.delete("/delete/1") # 删除数据
3. 请求参数
你可以从 URL 或请求体中获取用户传来的参数。
示例1:路径参数 Path Parameters
URL 中包含变量部分,例如:
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
访问 /users/123 将得到 { "user_id": 123 }
示例2:查询参数 Query Parameters
这是 URL 上面 ?key=value 的格式:
@app.get("/search")
def search(q: str = None, limit: int = 10):
return {"query": q, "limit": limit}
访问 /search?q=hello&limit=5 会返回 { "query": "hello", "limit": 5 }
示例3:请求体 Body Parameters
用于 POST 请求,比如用户注册:
from pydantic import BaseModel
class UserCreate(BaseModel):
username: str
email: str
password: str
@app.post("/register")
def register(user: UserCreate):
return {
"username": user.username,
"email": user.email,
"status": "registered"
}
FastAPI 会自动解析并验证 JSON 数据是否符合模型结构。
4. Pydantic 模型
上面提到的 UserCreate 是一个 Pydantic 模型,它用于定义和校验数据结构。
它可以自动完成这些事情:
- 校验传入的数据是否符合要求(比如必须有 username)
- 转换数据类型(例如字符串转整数)
- 返回清晰的错误信息
安装它只需要:
pip install pydantic
新手常问:FastAPI 和 Flask 区别大吗?
| 特性 | Flask | FastAPI |
|---|---|---|
| 性能 | 较低(同步) | 高(支持异步) |
| 文档 | 手写或插件生成 | 自动生成 Swagger 和 Redoc |
| 类型提示 | 不强制使用 | 强烈推荐使用 |
| 数据验证 | 手动处理或第三方 | 内建 Pydantic 支持 |
所以如果你追求高效、易用、现代化的后端开发体验,推荐直接使用 FastAPI。
实战项目:做一个简单的学生管理系统

我们通过实际项目来巩固所学知识。
功能需求
我们要实现以下几个功能:
- 显示所有学生列表(GET)
- 添加一个学生(POST)
- 查看特定学生信息(GET + 路径参数)
- 删除某个学生(DELETE)
步骤 1:创建主程序文件
在项目目录下新建一个文件 main.py,内容如下:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List, Optional
app = FastAPI()
# 学生数据模型
class StudentCreate(BaseModel):
name: str
age: int
grade: Optional[int] = None
class Student(StudentCreate):
id: int
# 临时内存数据库
students_db = []
# 获取全部学生
@app.get("/students", response_model=List[Student])
def get_students():
return students_db
# 添加学生
@app.post("/students", response_model=Student)
def create_student(student: StudentCreate):
new_id = len(students_db) + 1
new_student = Student(id=new_id, **student.dict())
students_db.append(new_student)
return new_student
# 获取某个学生
@app.get("/students/{student_id}", response_model=Student)
def get_student(student_id: int):
for student in students_db:
if student.id == student_id:
return student
return {"error": "Student not found"}
# 删除学生
@app.delete("/students/{student_id}")
def delete_student(student_id: int):
global students_db
students_db = [s for s in students_db if s.id != student_id]
return {"message": "Student deleted"}
步骤 2:启动服务
在终端运行:
uvicorn main:app --reload
这时你就能看到服务在本地启动了,默认监听地址是:http://127.0.0.1:8000
步骤 3:测试接口
点击打开浏览器,访问:
你会看到一个漂亮的交互式接口文档界面(Swagger UI),你可以在这里:
- 查看每个接口的描述和参数
- 直接发送请求测试接口效果
- 不需要 Postman 也可以调试 API!
小结一下做了些什么:
| 功能 | 对应 URL | 请求方式 |
|---|---|---|
| 获取学生列表 | /students | GET |
| 添加学生 | /students | POST |
| 获取某个学生 | /students/{student_id} | GET |
| 删除学生 | /students/{student_id} | DELETE |
这是一个典型的 CRUD 应用示例(Create, Read, Update, Delete)。
常见问题解答(FAQ)
以下是新手容易遇到的问题,希望对你有所帮助:

Q1:为什么我的接口不能被访问?
- 检查是否已经启动服务:
uvicorn main:app --reload - 检查浏览器访问的地址是否正确:应该是
http://127.0.0.1:8000/xxx - 看看控制台有没有报错信息,尤其是路径拼写错误或者语法错误
Q2:出现 TypeError: unsupported operand type(s)
通常是因为你尝试将两个不同类型的数据进行运算,比如字符串和数字相加。
解决办法:
- 检查你的函数中是否有返回值错误
- 一般出现在使用
.dict()或者构造返回字典的时候
Q3:我写的模型类是不是必须继承 BaseModel?
是的!所有的 Pydantic 模型都必须继承 BaseModel,否则无法进行自动类型检查和数据解析。
Q4:FastAPI 支持数据库连接吗?
目前我们使用的是内存中的列表作为“数据库”。真实项目中,你需要结合数据库比如 SQLite、PostgreSQL、MySQL 等。
FastAPI 自身并不绑定数据库,但可以轻松与 SQLAlchemy、Tortoise ORM、MongoEngine 等配合使用。
Q5:部署到生产环境要注意什么?
- 不建议使用 Uvicorn 的
--reload模式部署(因为那是开发模式) - 可以使用 Nginx + Uvicorn Gunicorn 来部署
- 注意日志、异常处理、权限控制、安全性等问题
学习建议:下一步怎么学?
恭喜你完成了第一个 FastAPI 入门教程!接下来可以沿着以下几个方向深入学习:
✅ 推荐学习路线图:
✅ 深入学习 Pydantic 模型
- 更复杂的数据结构
- 数据验证规则编写
✅ 学习连接数据库
- 推荐:SQLAlchemy 或 Tortoise ORM
- 学习基本的增删改查操作
✅ 掌握中间件和依赖注入
- 认证授权(JWT)
- 日志记录、限流、缓存等高级功能
✅ 了解异步编程
- 使用 async/await 提升并发能力
✅ 项目实战进阶
- 构建博客系统、商城后端、社交平台等完整项目
- 接入 Redis、消息队列(如 RabbitMQ)、定时任务等功能
✅ 项目部署上线
- Docker 容器化打包
- 使用 Gunicorn + Uvicorn 部署生产环境
- 使用 Nginx 做反向代理和负载均衡
结语:坚持实践,不断进步!

FastAPI 是一个学习曲线平滑、功能强大的工具,非常适合想要快速进入后端开发的新手程序员。
记住一句话:
“学习编程最重要的不是看懂,而是动手写出属于你自己的代码。”
希望你在学习的路上越走越远,未来成为一名出色的开发者!
如果你喜欢这种风格的教程,欢迎继续关注后续课程,我会带来更多实用、有趣的内容!

评论 0