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

在开始学习之前,我们先来理解一下什么是FastAPI。
简单来说,FastAPI 是一个用来构建网页后端程序的 Python 框架。你可以把它想象成是搭积木时用的基础模块 —— 它帮你处理了网络请求、数据交互、错误处理这些常见任务,让你可以更专注于实现业务功能。
FastAPI 的最大特点是:
- 快速开发:语法简洁,上手快
- 自动文档生成:写好接口后会自动生成网页版 API 文档(Swagger 和 ReDoc)
- 性能高:基于异步编程模型,适合高并发场景
- 类型安全:支持 Python 的类型注解(Type Hint),帮助你提前发现代码问题
如果你是刚接触后端开发的小白,FastAPI 是一个非常好的起点。
二、环境准备:搭建开发环境

在使用 FastAPI 前,你需要准备好 Python 环境。以下是详细的步骤:
1. 安装 Python
首先确保你的电脑上安装了 Python 3.8 或以上版本。可以通过终端或命令行输入以下命令查看:
python --version
如果没有安装,请去 Python官网 下载最新版本并安装。
2. 推荐使用虚拟环境
为了不污染全局环境,建议创建一个独立的 Python 虚拟环境:
python -m venv venv
激活虚拟环境(Windows):
venv\Scripts\activate
macOS / Linux:
source venv/bin/activate
3. 安装 FastAPI 和 Uvicorn
Uvicorn 是运行 FastAPI 应用的服务器工具。安装命令如下:
pip install fastapi uvicorn
✅ 小贴士:uvicorn 是一个 ASGI 服务器,专门用于运行支持异步操作的 Python Web 框架(如 FastAPI)。
三、核心概念讲解(通俗易懂)
下面介绍几个你马上就会接触到的核心概念,用最简单的语言解释清楚。
1. 什么是 API?
API 就像是一扇“门”,供别人访问你的程序功能。例如:
- 当你在浏览器里打开一个网页,浏览器其实是在向后台“开门”拿数据
- 手机 App 获取天气信息,也是通过访问某个 API 来完成的
2. FastAPI 怎么工作?
FastAPI 会在你指定的地址(比如 /hello)监听网络请求。当有人访问这个地址时,执行你写好的函数,并返回结果。
例如:
from fastapi import FastAPI
app = FastAPI()
@app.get("/hello")
def say_hello():
return {"message": "Hello World!"}
这段代码的意思是:
- 创建了一个叫
app的应用对象 - 使用装饰器
@app.get("/hello")表示这是一个 GET 请求的入口点 - 当用户访问
/hello这个地址时,就会调用say_hello()函数 - 返回的是一个 JSON 数据
3. 异步 vs 同步(不用深究,但要了解)
FastAPI 支持异步编程,这意味着它可以同时处理多个请求而不卡顿。你可以暂时记住这一点,在后续实践过程中自然理解它的作用。
四、实战项目:从零开始创建一个博客系统API
我们将一步步完成一个简单的博客管理系统,包括:
- 显示所有文章
- 添加一篇文章
- 根据 ID 查看某篇文章
💡 在此之前请确保你已经安装好了 FastAPI 和 Uvicorn,并且处于虚拟环境中。
第一步:新建项目文件
创建一个名为 main.py 的文件,内容如下:
from fastapi import FastAPI
app = FastAPI()
# 模拟数据库中的文章列表
posts = [
{"id": 1, "title": "欢迎来到我的博客", "content": "这是第一篇博客文章"},
{"id": 2, "title": "学习 FastAPI 真有趣", "content": "今天我学会了怎么写后端"}
]
# 首页测试
@app.get("/")
def read_root():
return {"message": "博客系统API已启动"}
保存后,进入命令行,运行:
uvicorn main:app --reload
然后打开浏览器访问 http://localhost:8000,你会看到:
{"message":"博客系统API已启动"}
🎉 成功了!你的第一个 FastAPI 应用已经开始运行!
第二步:获取所有文章
添加一个新的路由 /posts,让它返回所有的文章列表:
@app.get("/posts")
def get_posts():
return posts
重启服务或刷新页面(因为加了 --reload),再次访问 http://localhost:8000/posts,你应该能看到之前定义的文章列表。
第三步:根据ID获取某篇文章
现在我们想通过文章ID查看具体内容,比如访问 /posts/1 时只返回第一篇文章:
@app.get("/posts/{post_id}")
def get_post(post_id: int):
for post in posts:
if post["id"] == post_id:
return post
return {"error": "未找到该文章"}
这里注意:
{post_id}是路径参数post_id: int表示我们期望传入一个整数类型的数据- 如果没找到对应的 ID,返回一个提示信息
试着访问 /posts/1 和 /posts/999 看看效果吧!
第四步:添加新文章
接下来我们来实现添加文章的功能,使用 POST 方法:
from fastapi import FastAPI, Body
...
@app.post("/posts")
def create_post(new_post: dict = Body(...)):
posts.append(new_post)
return {"message": "文章已添加成功"}
这样就可以接收来自外部的新文章数据了。
✅ 实践小技巧:
你可以使用 Postman 或者浏览器的 Swagger 页面进行测试。
运行服务后,访问 http://localhost:8000/docs,你将看到自动构建的 API 文档界面。点击 /posts -> Try it out -> 输入 JSON 示例:
{
"id": 3,
"title": "第三篇文章",
"content": "这篇文章是从POST方法添加的"
}
点击 “Execute”,你会看到响应提示:“文章已添加成功”。
再访问一次 /posts,会发现多了一条新的记录!
五、常见问题解答(FAQ)
作为新手,你可能会遇到一些常见问题,下面是精选的问题与解答:
Q1:为什么运行 uvicorn main:app 报错?
可能原因有:
- 文件名不是
main.py app = FastAPI()拼写错误- 项目目录中存在中文字符(某些情况下会出问题)
- 缺少依赖库
✅ 解决办法:
- 确认文件名和内容正确
- 使用英文命名文件和文件夹
- 重新执行
pip install fastapi uvicorn
Q2:访问不到 localhost:8000 是怎么回事?
有可能是:
- 本地 8000 端口被占用
- 防火墙设置阻止连接
✅ 解决办法:
- 更换端口号:
uvicorn main:app --host 0.0.0.0 --port 8080 - 检查防火墙设置,临时关闭试试
Q3:GET 方法正常,POST 方法报422是什么意思?
这通常是因为提交的数据格式不对或者字段不完整。
✅ 解决办法:
- 使用正确的 JSON 格式
- 确保字段匹配服务器要求(比如 id 必须为整数)
Q4:如何让 FastAPI 支持 HTML 页面返回?
默认 FastAPI 只返回 JSON 数据。如果需要返回 HTML 页面,可以结合 Jinja2 模板引擎等工具,但这超出本文范围。后续进阶课程会有相关内容。
Q5:FastAPI 支持数据库吗?
支持,而且非常容易整合!后续你可以学习如何将 FastAPI 与 SQLite、MySQL、PostgreSQL 等数据库对接。
六、下一步学习建议
恭喜你已经完成了本教程的学习!你现在具备了使用 FastAPI 开发基础 RESTful API 的能力。
那么接下来你可以学习:
✅ 学习路径建议:
深入FastAPI特性
- 中间件(Middleware)
- 路由分组
- 异常处理
- 请求过滤与权限控制
集成数据库
- 学习 ORM 框架(如 SQLAlchemy 或 Tortoise-ORM)
- 实现对数据库的增删改查
部署项目
- 学会把 FastAPI 应用部署到服务器上
- 使用 Gunicorn + Nginx 提升性能和稳定性
进阶主题
- 用户认证(JWT、OAuth)
- WebSocket 实现实时通信
- 单元测试和自动化测试
七、结语:坚持就是进步的关键
刚开始学习后端开发可能会感觉有点挑战,尤其是面对大量新词汇和框架的时候。不过,只要你愿意动手实践,边学边敲代码,慢慢就会建立起自信。
记住一句话:
“编程不是记忆知识的过程,而是练习解决问题的能力。”
加油,未来的开发者!欢迎留言交流你的学习心得 😊

评论 0