FastAPI入门:Python后端开发新手指南
开篇:FastAPI到底是个啥?我为什么要学它?

你是不是也听说过“后端开发”、“接口”、“服务器”这些词,但一直不知道它们到底是干什么的?没关系!我们从最简单的开始。
想象一下你玩手机App的时候,比如淘宝、微信或者抖音。当你点击一个按钮,比如搜索商品或发送消息时,这个请求其实会跑到远程的一台电脑(叫“服务器”)上去处理。后端开发就是负责写这台电脑上运行的程序,让它能正确地接收你的请求、处理数据、再返回结果给你。
而 FastAPI 就是一个帮助你快速写出这种“服务器程序”的工具,是用 Python 写的!
它的优点有:
- 上手简单,特别适合新手
- 性能高,能处理很多请求
- 自动生成 API 文档,方便查看和测试
- 支持现代技术,比如异步编程(后面会讲)
总之,如果你是零基础想入门前端/后端开发,FastAPI 是个非常好的起点!
环境准备:让你的电脑准备好写 FastAPI 项目

学习任何编程技能之前,第一步永远是安装环境。不用担心,这个过程很轻松。
步骤一:安装 Python(3.8 或以上)
FastAPI 需要 Python 3.8 以上的版本。你可以去 Python官网 下载最新版并安装。装好后打开命令行(Windows 按 Win + R,输入 cmd;Mac 打开终端),输入:
python --version
如果显示的是 3.9.x 或 3.10.x,那你就搞定了!
⚠️ 如果提示不是内部命令,可能是没加环境变量。可以重新安装,勾选“Add to PATH”。
步骤二:创建虚拟环境(推荐)
Python 有个很方便的功能叫做“虚拟环境”,就是专门为每个项目创造一个独立的空间,防止不同项目之间打架(比如依赖不同版本库)。
创建虚拟环境:
python -m venv myenv
激活虚拟环境:
Windows:
myenv\Scripts\activateMac/Linux:
source myenv/bin/activate
激活后命令行前面应该会多出 (myenv) 的字样,表示你在使用这个虚拟环境了。
步骤三:安装 FastAPI 和 Uvicorn
FastAPI 只是框架本身,我们需要一个“服务器引擎”来运行它。通常我们会配合 Uvicorn 使用,它是用来启动 FastAPI 应用的服务软件。
在命令行中执行以下命令安装:
pip install fastapi uvicorn
安装完成后可以用下面这个命令检查是否成功:
uvicorn --version
如果你看到类似这样的输出:
Running uvicorn 0.27.0 with CPython 3.10.6 on Darwin
那就说明你已经准备好了!
核心概念:FastAPI 基础知识速通

别被“概念”这个词吓到,我保证,这一节超简单,而且全都有代码示例。
1. 创建一个应用对象
首先我们要导入 FastAPI,然后创建一个“应用实例”。这就是整个项目的入口点。
新建一个文件,比如叫 main.py,写入下面的内容:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "你好,世界!"}
这是什么意思呢?
FastAPI():创建了一个 FastAPI 应用。@app.get("/"):这是一个装饰器,表示当用户访问网站根路径/时,调用read_root这个函数。- 函数返回的
{"message": "你好,世界!"}就是我们给用户的响应。
2. 启动服务器
在命令行中运行:
uvicorn main:app --reload
说明:
main表示文件名(main.py)app是我们定义的应用实例--reload表示代码变化后自动重启服务器(开发模式用)
现在打开浏览器,访问地址:http://localhost:8000
你应该会看到:
{
"message": "你好,世界!"
}
太棒啦!你现在有一个能工作的网页接口了!
3. 自动生成文档(Swagger UI)
更酷的是,FastAPI 自动帮你生成了接口文档,在浏览器访问:
你会看到一个漂亮的交互式页面,里面可以看到所有你写的接口,并且还能直接点进去测试!
4. 路由与请求方法(GET / POST)
除了 GET 请求,我们也常用 POST 方法传数据。比如用户登录、提交订单等场景通常使用 POST。
修改 main.py,新增一个 POST 接口:
@app.post("/login")
def login(username: str, password: str):
return {
"username": username,
"status": "success"
}
保存后刷新服务(因为开了 --reload,不用手动重启),然后在 docs 页面试试调用这个接口!
5. 查询参数 vs 请求体(Query vs Body)
这两个经常容易混淆。我们可以这样理解:
✅ 查询参数(Query Parameters)
就像浏览器地址栏里的那种:
比如:http://example.com/search?query=book&limit=5
写法如下:
@app.get("/search")
def search(query: str, limit: int = 10):
return {"query": query, "limit": limit}
✅ 请求体(Request Body)
用于 POST 等方法,数据藏在请求正文里。你需要导入 BaseModel 来描述结构。
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
@app.post("/items")
def create_item(item: Item):
return {"received": item}
这样你提交一个 JSON 数据就能收到它:
{
"name": "苹果",
"price": 8.5
}
6. 路径参数(Path Parameters)
有时候我们希望 URL 中带上变量,比如文章 ID:
@app.get("/article/{article_id}")
def get_article(article_id: int):
return {"id": article_id, "title": f"第 {article_id} 篇文章"}
访问:http://localhost:8000/article/123,你会得到:
{
"id": 123,
"title": "第 123 篇文章"
}
实战项目:做一个“待办事项”管理器
我们来做一个完整的 mini 小项目:待办事项列表管理系统。
目标功能:
- 查看所有任务
- 新增一个任务
- 删除某个任务(进阶)
Step 1:先搭架子
创建文件夹 todo-app,里面放一个 main.py。
内容如下:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List, Optional
app = FastAPI()
# 模拟数据库(后面学数据库就换成真的)
tasks = []
class TaskCreate(BaseModel):
title: str
description: Optional[str] = None
class Task(TaskCreate):
id: int
@app.get("/tasks", response_model=List[Task])
def get_tasks():
return tasks
@app.post("/tasks", response_model=Task)
def create_task(task: TaskCreate):
task_id = len(tasks) + 1
new_task = Task(**task.dict(), id=task_id)
tasks.append(new_task)
return new_task
启动服务器:
uvicorn main:app --reload
打开 docs,试试看添加两个任务:
POST 到 /tasks,格式为:
{
"title": "买菜",
"description": "下午去超市买菜"
}
然后 GET /tasks 就能看到所有任务了!
Step 2:加上删除功能(可选)
想挑战下自己?我们来加个删除功能:
@app.delete("/tasks/{task_id}")
def delete_task(task_id: int):
for index, task in enumerate(tasks):
if task.id == task_id:
del tasks[index]
return {"message": "删除成功"}
return {"message": "没有找到该任务"}
这样你就可以访问 /tasks/1 并使用 DELETE 方法把第一条任务删掉了。
常见问题:新手最容易遇到的问题 & 解决办法
这里总结了一些我平时教学中最常见的坑,希望能帮你绕过去!
❓ Q1:运行 uvicorn 提示找不到模块怎么办?
比如报错说:
ModuleNotFoundError: No module named 'fastapi'
说明你没装 FastAPI,用下面这条命令装:
pip install fastapi uvicorn
❓ Q2:访问不了本地服务器怎么办?
确保你运行了 uvicorn 命令,并且看到这句:
INFO: Uvicorn running on http://127.0.0.1:8000
如果有防火墙或者网络限制,有时候需要换地址,比如用 0.0.0.0:8000:
uvicorn main:app --host 0.0.0.0 --port 8000
❓ Q3:为什么我的修改不生效?
如果你没加 --reload 参数,就需要手动停止再重启服务。建议总是加上 --reload(开发时很有用)。
❓ Q4:Python 多版本冲突怎么办?
如果你的系统中装了多个 Python,可以考虑使用虚拟环境隔离出来,避免污染全局环境。
❓ Q5:Post 请求必须用 JSON 格式吗?
FastAPI 默认支持 JSON。如果你想传其他格式,需要额外设置,比如 form-data、XML 等。
学习建议:下一步我可以学什么?

恭喜你完成了第一个 FastAPI 应用!接下来你可以继续深入以下几个方向:
🧩 1. 学习数据库连接(非常重要!)
目前我们的“任务列表”都只是存在内存里,重启就没了。真实项目中需要用数据库保存数据。推荐学习:
- SQLAlchemy(操作关系型数据库如 PostgreSQL、MySQL)
- Tortoise ORM(更适合异步操作)
教程建议关键词:FastAPI + ORM + 数据库连接
🔒 2. 学习认证与权限控制
比如用户登录、角色管理。可以学习:
- JWT 认证
- OAuth2(常用于第三方登录)
- Session 认证
📦 3. 把项目打包上线
想让别人也能访问你的服务器?你可以:
- 部署到云服务器(如阿里云、腾讯云)
- 使用 Docker 打包运行
- 配置 Nginx 做反向代理
🧠 4. 学习异步编程
FastAPI 很强大是因为它原生支持异步。你可以学习:
- async def 函数
- await 关键字
- 异步请求外部接口
这对性能提升非常关键。
结语:坚持下去,你也能成为高手!
编程是一门实践性很强的技术。你看完这篇文章、跑通了例子之后,最重要的事情就是——动手做自己的项目!
你可以尝试做个博客后台、做个问卷调查小工具、甚至做个简易商城……只要你敢想,就能实现!
如果你喜欢这样的教程风格,欢迎留言告诉我你还想了解什么主题:Flask?Django?前端Vue?我都会为你写出来!
Happy coding 😄

评论 0