FastAPI入门:Python后端开发新手指南
大家好,我是掘金上的一名全栈工程师,毕业于985高校,平时喜欢写技术教程。今天这篇文章,我想带完全零基础的朋友走进后端开发的世界——通过 FastAPI 这个现代、快速(高性能)、易用的 Python Web 框架。
你可能会问:“为什么选 FastAPI?不是还有 Flask、Django 吗?”
确实,Flask 和 Django 都很优秀,但 FastAPI 是近几年崛起的新星,它自动支持 API 文档生成、类型提示(Type Hints)、异步编程,而且性能接近 Go 语言写的框架!对初学者来说,既能写出规范的接口,又能少踩很多坑。
我当初学后端时,被各种配置和术语搞得头大。所以今天这篇教程,我会用 最直白的语言 + 可运行的代码 + 常见问题解答,手把手带你从零做出一个能跑的 API 项目,并部署到 GitHub 上。即使你连“后端是啥”都不清楚,也没关系!
一、FastAPI 是什么?能做什么?
简单说:FastAPI 是一个帮你用 Python 快速搭建 Web 接口(API)的工具。
- 你可以用它写一个天气查询接口
- 可以做用户登录注册系统
- 也可以对接前端 App 或网页
它的最大优点:
- ✅ 自动根据你的代码生成漂亮的 API 文档(不用手动写!)
- ✅ 支持异步(async/await),处理大量请求不卡顿
- ✅ 性能超高,官方测试显示比 Flask 快 3~5 倍,接近 Go 写的服务
- ✅ 代码简洁,5 行就能起一个服务
💡 小知识:Go 是一种编译型语言,常用于高性能后端服务(比如 Docker、Kubernetes 都是 Go 写的)。FastAPI 虽然是 Python 写的,但底层用了 Starlette(异步框架)和 Pydantic(数据校验),所以速度能追上 Go 的部分场景。
二、环境准备:5 分钟搭好开发环境
步骤 1:安装 Python(≥3.7)
去 https://www.python.org/downloads/ 下载最新版(建议 3.9+)。
安装时记得勾选 “Add to PATH”(Windows 用户特别注意!)。
验证是否安装成功:
python --version
# 或
python3 --version
看到类似 Python 3.10.12 就 OK。
步骤 2:创建虚拟环境(推荐)
虚拟环境可以隔离项目依赖,避免不同项目之间包冲突。
# 创建虚拟环境(名字叫 fastapi-env)
python -m venv fastapi-env
# 激活虚拟环境
# Windows:
fastapi-env\Scripts\activate
# macOS / Linux:
source fastapi-env/bin/activate
激活后,命令行前面会出现 (fastapi-env),说明成功了。
步骤 3:安装 FastAPI 和 Uvicorn
Uvicorn 是一个 ASGI 服务器,用来运行 FastAPI 应用。
pip install fastapi uvicorn
⚠️ 注意:不要用
sudo pip!虚拟环境下直接pip即可。
三、核心概念:用大白话讲清楚
1. 什么是 API?
API(Application Programming Interface)就是“程序之间的对话规则”。
比如你用微信小程序点外卖,小程序会向后端服务器发一个请求:“我要看附近的餐厅”,后端就返回餐厅列表——这个“请求-响应”的过程就是通过 API 完成的。
FastAPI 就是用来写这种“响应逻辑”的工具。
2. 路由(Route)和端点(Endpoint)
- 路由:URL 路径,比如
/users、/weather - 端点:对应某个路由的具体函数
例如:
@app.get("/hello")
def say_hello():
return {"message": "Hello, World!"}
当你访问 http://localhost:8000/hello,就会看到 JSON 返回。
3. 请求方法(GET、POST 等)
| 方法 | 用途 |
|---|---|
| GET | 获取数据(如查用户信息) |
| POST | 提交数据(如注册新用户) |
| PUT | 更新数据 |
| DELETE | 删除数据 |
FastAPI 用 @app.get()、@app.post() 装饰器来区分。
4. Pydantic 模型:自动校验数据
这是 FastAPI 最牛的地方之一!你可以定义“输入数据长什么样”,FastAPI 会自动检查。
比如:
from pydantic import BaseModel
class UserCreate(BaseModel):
name: str
age: int
如果前端传了 age: "abc",FastAPI 会立刻报错,不会让你的程序崩溃。
四、实战项目:做一个“待办事项(Todo)”API
我们来做一个简单的 Todo 列表 API,包含:
- 查看所有任务(GET)
- 添加新任务(POST)
第一步:创建项目文件
在你的工作目录下新建 main.py:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List
app = FastAPI()
# 模拟数据库(实际项目用数据库,这里简化)
todos = []
class TodoItem(BaseModel):
id: int
title: str
completed: bool = False
# 查看所有任务
@app.get("/todos", response_model=List[TodoItem])
def get_todos():
return todos
# 添加新任务
@app.post("/todos")
def create_todo(todo: TodoItem):
todos.append(todo)
return {"message": "Todo added", "todo": todo}
第二步:运行项目
在终端执行:
uvicorn main:app --reload
main是文件名(main.py)app是代码中的app = FastAPI()--reload表示代码修改后自动重启(开发时超方便!)
你会看到:
INFO: Uvicorn running on http://127.0.0.1:8000
第三步:测试 API
打开浏览器,访问:
http://127.0.0.1:8000/todos→ 返回空列表[]http://127.0.0.1:8000/docs→ 自动生成的 API 文档!(Swagger UI)
点击 “POST /todos” → Try it out → 输入:
{
"id": 1,
"title": "学习 FastAPI",
"completed": false
}
点击 Execute,返回成功!
再刷新 /todos,就能看到刚添加的任务了。
🎉 恭喜!你已经做出了第一个后端 API!
第四步:把项目上传到 GitHub
- 在 GitHub 新建一个仓库,比如
fastapi-todo-demo - 本地初始化 Git:
git init
git add .
git commit -m "Initial commit: Todo API with FastAPI"
git remote add origin https://github.com/你的用户名/fastapi-todo-demo.git
git push -u origin main
现在你的项目就在 GitHub 上了!别人可以 clone 下来运行,也能给你提 Issue。
💡 小技巧:在项目根目录加个
README.md,写清楚怎么运行项目,别人会更愿意 star 你的 repo!
五、新手常见问题 & 解决方案
Q1:运行 uvicorn 报错 “command not found”
原因:没在虚拟环境中安装,或者 PATH 没配置好。
解决:
- 确保激活了虚拟环境(看到
(fastapi-env)) - 重新执行
pip install uvicorn
Q2:访问 /docs 页面空白或报错
原因:可能是网络问题加载不了 Swagger 的 JS/CSS。
解决:
- 尝试访问
/redoc(另一种文档风格) - 或者检查是否用了代理,临时关闭试试
Q3:POST 请求时报 “422 Unprocessable Entity”
原因:传的数据不符合 Pydantic 模型定义。
例子:
- 你定义了
age: int,但传了"age": "twenty" - 或者漏传了必填字段
解决:看返回的错误信息,它会告诉你哪里错了。比如:
{
"detail": [
{
"loc": ["body", "age"],
"msg": "value is not a valid integer",
"type": "type_error.integer"
}
]
}
Q4:为什么不用 Go?Go 不是更快吗?
这是个好问题!
- Go 确实更快、更适合高并发场景(比如百万级连接)
- 但 Python 学习曲线平缓,生态丰富(数据分析、AI 都用 Python)
- FastAPI 已经足够快(每秒处理几千请求),对大多数项目绰绰有余
建议:先用 FastAPI 入门后端,理解 HTTP、API、数据库等概念后,再学 Go 也不迟。
六、下一步学习建议
你已经迈出了后端开发的第一步!接下来可以:
✅ 短期目标(1~2周)
- 给 Todo 项目加上 删除 和 更新 功能
- 学习如何连接 真实数据库(推荐 SQLite + SQLAlchemy)
- 了解 HTTP 状态码(200、404、500 等)
✅ 中期目标(1个月)
- 学习 用户认证(用 JWT 实现登录)
- 尝试部署到云服务器(如 Vercel、Render、阿里云)
- 阅读 FastAPI 官方文档:https://fastapi.tiangolo.com
✅ 长期方向
- 如果喜欢 Python 生态:深入学习 Django、Celery(异步任务)
- 如果追求极致性能:开始学 Go(推荐《Go 语言圣经》)
- 如果想做全栈:搭配 Vue/React 做完整项目
结语
我当初学后端时,也是从一个简单的 “Hello World” API 开始的。别怕犯错,每个程序员都经历过 404、500、ImportError 的洗礼。FastAPI 的设计哲学就是 让开发者少写 bug,多出成果。
希望这篇教程能成为你后端之旅的起点。如果你照着做了,欢迎把项目发到 GitHub,并在评论区告诉我你的感受!
🔗 本文代码已开源:https://github.com/yourname/fastapi-todo-demo(替换为你的链接)
记住:写代码不是为了完美,而是为了开始。
现在,去运行你的第一个 FastAPI 服务吧!🚀

评论 0