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

如果你是零基础的新手,第一次听到“FastAPI”这个词,可能会觉得它听起来很深奥。别担心,其实它是一个非常亲民的工具,特别适合我们这些刚开始学习编程的人。
FastAPI 是一个基于 Python 的 Web 框架,用于快速构建 API(应用程序接口)。你可以把它想象成一个“自动问答机器人”,当用户提出问题(比如访问一个网址),你就可以通过 FastAPI 回答他们想要的数据或结果。
简单来说,它的主要用途包括:
- 创建网站后台服务
- 提供数据给前端网页、手机 App 或小程序
- 实现与其他系统的数据交互(比如微信、支付宝)
举个例子:你在淘宝上查商品价格,其实是调用了淘宝的 API;你在天气 App 上看明天会不会下雨,也是因为 App 请求了气象站的 API 数据。而 FastAPI 能帮你写一个属于自己的 API 接口,让别人来用你的数据和服务!
而且 FastAPI 还有以下优点,非常适合初学者:
✅ 速度快,性能好
✅ 支持自动生成文档
✅ 语法简洁,易读性强
✅ 内置参数校验功能
✅ 完美支持异步编程
接下来,我们就从最基础的环境搭建开始,一起开启这段旅程吧!
环境准备:轻松搞定开发工具安装

在写任何程序之前,我们得先准备好“工具箱”。这一部分会详细教你如何安装必要的软件和库。
第一步:安装 Python
FastAPI 是 Python 写的,所以当然要先装好 Python。建议你使用 Python 3.8 及以上版本。
下载地址:https://www.python.org/downloads/
安装时记得勾选「Add to PATH」,这样电脑才能知道去哪里找 Python。
安装完成后,在命令行输入:
python --version
如果看到类似 Python 3.9.x 的字样,说明安装成功啦!
第二步:创建虚拟环境(可选但推荐)
为了避免不同项目之间的依赖包冲突,我们可以为每个项目创建一个“独立的小房间”,这就是 虚拟环境。
在项目文件夹中打开终端(命令行),运行以下命令:
python -m venv venv
然后激活虚拟环境:
- Windows:
venv\Scripts\activate - Mac/Linux:
source venv/bin/activate
激活成功后,命令行前面会出现 (venv) 字样,表示已经进入这个“独立空间”。
第三步:安装 FastAPI 和 Uvicorn
现在我们要安装 FastAPI 和一个运行它的工具 —— Uvicorn。
还是在命令行中执行下面这句:
pip install fastapi uvicorn
等待安装完成即可。
小贴士:测试安装是否成功
新建一个文件叫 main.py,里面写下:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "欢迎来到我的第一个 FastAPI 应用!"}
然后在命令行中运行:
uvicorn main:app --reload
这时你会看到一大串日志信息,最后提示服务正在运行,并告诉你访问地址:http://127.0.0.1:8000
打开浏览器,访问这个地址,就能看到返回的 JSON 数据:
{
"message": "欢迎来到我的第一个 FastAPI 应用!"
}
恭喜你,你的第一个 FastAPI 程序运行成功啦!
核心概念:FastAPI 中的几个关键知识点

接下来我们来看看 FastAPI 中最重要的几个概念。记住,我们不求记住所有细节,先理解大概意思就好。
1. FastAPI 的本质:处理 HTTP 请求
FastAPI 的任务就是接收网络请求(比如你浏览器访问了一个网址),然后给出响应(比如返回数据)。
常见的 HTTP 方法 有几种:
| 方法 | 含义 |
|---|---|
| GET | 获取资源 |
| POST | 提交新数据 |
| PUT | 更新已有数据 |
| DELETE | 删除数据 |
在 FastAPI 中,我们通过装饰器来绑定这些方法,比如:
@app.get("/") # 当访问根路径 / 时触发这个函数
def read_root():
return {"message": "你好,世界!"}
2. 路由(URL 路径)
路由就是你访问的 URL 地址,比如:
/:首页/users:用户列表页/users/123:查看 ID 为 123 的用户信息
在 FastAPI 中定义路由非常简单:
@app.get("/hello")
def say_hello():
return {"content": "Hello, World!"}
这样,当你访问 http://localhost:8000/hello 时,就会显示这条消息。
3. 参数传递方式
很多时候我们需要从用户那里获取一些输入,比如他们的名字、年龄等。在 FastAPI 中有三种常见传参方式:
(1)路径参数(Path Parameters)
把参数直接写在 URL 路径里,适合唯一标识符,比如用户 ID:
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
访问 /users/12345,会输出:{"user_id": 12345}
注意:
user_id: int会自动转换成整数类型,还能做类型检查哦!
(2)查询参数(Query Parameters)
放在 URL 后面的 ?key=value 形式:
@app.get("/search")
def search(name: str, age: int = None):
return {"name": name, "age": age}
访问:/search?name=Tom&age=20,结果为:
{"name": "Tom", "age": 20}
(3)请求体(Request Body)
适用于 POST 请求,可以提交更复杂的数据结构,比如一个用户注册表单:
from pydantic import BaseModel
class UserCreate(BaseModel):
username: str
email: str
password: str
@app.post("/register")
def register(user: UserCreate):
return {
"message": f"用户 {user.username} 注册成功!",
"email": user.email
}
你可以用 Postman、curl 或者浏览器插件发送 POST 请求试试看!
4. 自动生成文档(Swagger UI 和 ReDoc)
这是我们学习过程中特别实用的一个功能!
启动服务后,访问以下两个地址,可以看到接口文档:
- Swagger UI:http://127.0.0.1:8000/docs
- Redoc:http://127.0.0.1:8000/redoc
你可以直接在这个界面上点击“Try it out”来测试 API 功能,不需要额外写测试代码!
实战项目:做一个简单的用户管理系统
我们已经了解了一些基本知识,现在让我们动手做一个小项目来巩固一下所学内容。
项目目标:实现用户数据的增删改查(CRUD)
我们将实现如下功能:
| 功能 | 方法 | URL |
|---|---|---|
| 查询所有用户 | GET | /users |
| 查询单个用户 | GET | /users/{id} |
| 添加用户 | POST | /users |
| 更新用户 | PUT | /users/{id} |
| 删除用户 | DELETE | /users/{id} |
步骤一:创建文件结构
在你的项目文件夹中,新建文件:
project/
├── main.py
└── database.py
步骤二:模拟数据库(为了简单起见)
因为我们还没学数据库连接,这里先用内存中的一个列表来模拟:
在 database.py 中写:
users = []
next_id = 1
步骤三:编写主程序逻辑
修改 main.py:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from database import users, next_id
app = FastAPI()
# 用户模型
class UserCreate(BaseModel):
name: str
email: str
class UserResponse(BaseModel):
id: int
name: str
email: str
# 查询所有用户
@app.get("/users", response_model=list[UserResponse])
def get_users():
return users
# 查询单个用户
@app.get("/users/{user_id}", response_model=UserResponse)
def get_user(user_id: int):
for user in users:
if user["id"] == user_id:
return user
raise HTTPException(status_code=404, detail="用户未找到")
# 添加用户
@app.post("/users", response_model=UserResponse)
def create_user(user: UserCreate):
global next_id
new_user = {"id": next_id, "name": user.name, "email": user.email}
users.append(new_user)
next_id += 1
return new_user
# 更新用户
@app.put("/users/{user_id}", response_model=UserResponse)
def update_user(user_id: int, updated_user: UserCreate):
for user in users:
if user["id"] == user_id:
user.update(updated_user.dict())
return user
raise HTTPException(status_code=404, detail="用户未找到")
# 删除用户
@app.delete("/users/{user_id}", response_model=dict)
def delete_user(user_id: int):
for i, user in enumerate(users):
if user["id"] == user_id:
del users[i]
return {"message": "用户已删除"}
raise HTTPException(status_code=404, detail="用户未找到")

步骤四:运行项目并测试
在命令行执行:
uvicorn main:app --reload
然后访问:http://127.0.0.1:8000/docs
点开每一个接口,用 “Try it out” 来测试添加、更新、删除和查询操作。
是不是很神奇?你的第一个完整的 API 接口系统就这样完成了!
常见问题解答(FAQ)
Q1:FastAPI 需要数据库吗?
A:不一定。你可以用内存中的变量(比如列表或字典)临时保存数据。但如果要做真正的应用,还是需要连接数据库的,例如 SQLite、MySQL、PostgreSQL。
Q2:为什么我不能访问 localhost:8000?
A:请确认你已经正确运行了 uvicorn 命令,并且没有报错。有时候杀毒软件或防火墙也会阻止访问本地服务器,可以暂时关闭试试。
Q3:出现 ModuleNotFoundError 怎么办?
A:这是因为你还没安装相关模块。比如如果提示找不到 fastapi,那就执行:
pip install fastapi
确保所有依赖都安装完整。
Q4:POST 请求为什么总是报错?
A:可能是你发送的 JSON 格式不对。可以用 JSON Lint 检查格式是否正确,或者使用 Swagger 页面提供的表单来测试。
Q5:FastAPI 支持中文吗?
A:完全支持!你可以在返回值里自由使用中文,比如:
return {"消息": "你好,世界!"}
学习建议:下一步怎么继续学习?
你现在已经掌握了 FastAPI 的基本用法,接下来可以继续深入学习以下几个方向:
✅ 1. 数据库存储(进阶)
可以尝试连接真实的数据库:
- SQLite(轻量级)
- MySQL / PostgreSQL(企业级)
- MongoDB(非关系型数据库)
FastAPI 很容易与数据库结合,你可以学习使用 SQLAlchemy、Tortoise ORM、MongoEngine 等工具。
✅ 2. 认证与权限控制
学会如何让用户登录、设置角色权限,例如:
- JWT(JSON Web Token)
- OAuth2
- Session 登录
这些都是开发真实应用必须掌握的内容。
✅ 3. 异步编程(提升性能)
FastAPI 支持异步编程,可以写出更快的网络应用。如果你对效率有追求,建议学习 async/await 关键字的使用。
✅ 4. 部署上线
完成本地开发后,可以尝试将你的 FastAPI 项目部署到服务器,比如:
- 使用 Nginx + Gunicorn/Uvicorn 配合 Docker
- 部署到云服务器(阿里云、腾讯云、Heroku)
这样你的 API 才能真正被外部用户访问到。
✅ 5. 继续练手项目推荐
尝试自己写一些小型项目:
- 博客系统
- 天气预报接口
- 图书借阅管理
- 商品订单系统
边做边查资料,进步最快!
结语:坚持是最好的老师
到这里为止,你已经学会了 FastAPI 的基本用法,也完成了一个实战项目。虽然还有很多高级内容等着你去探索,但重要的是你已经跨出了第一步!
记住一句话:“程序员不是天生的,而是练出来的。”
保持好奇心,多敲代码,多实践,很快你也能成为一个自信满满的后端开发者!
如果你喜欢这篇文章,欢迎收藏、分享,有任何疑问也可以留言交流。祝你在编程路上越走越远!🚀

评论 0