FastAPI上手太难?零基础也能写出第一个Python后端接口!
大家好,我是小K,一名在大厂干了三年后端开发的工程师,业余时间也在B站做技术UP主。经常有粉丝私信问我:“想学Python写后端,该从哪开始?”、“Django太重,Flask又太老,有没有更现代的选择?”——我的答案一直是:试试 FastAPI。
我当初学的时候,也被各种框架绕得晕头转向。直到接触 FastAPI,才发现原来写后端可以这么简洁、高效,还能自动生成文档!今天这篇教程,就是专门为你——完全零基础的新手准备的。不需要你懂数据库、不需要你会部署,只要会一点 Python 基础,就能跟着做出一个能跑的 API。
顺便提一句,虽然标题里出现了 Go(因为很多同学会对比),但本文不涉及任何 Go 代码。我会用实战经验告诉你:为什么 Python + FastAPI 是新手入门后端的最佳组合之一。
一、FastAPI 到底是什么?能用来做什么?
简单说,FastAPI 是一个用 Python 写的 Web 框架,专门用来快速开发高性能的 API(也就是后端接口)。
- 它比 Flask 更现代,比 Django 更轻量。
- 自动帮你生成交互式 API 文档(不用再手动写 Swagger!)。
- 支持异步(async/await),性能接近 Go 语言写的后端(真的!)。
- 类型提示(Type Hints)是核心,代码更安全、IDE 提示更智能。
💡 举个实际例子:你想做一个天气查询小程序,前端发请求给你的服务器,你返回今天的温度。这个“接收请求 → 处理逻辑 → 返回数据”的过程,就是 FastAPI 要做的事。
二、环境准备:5 分钟搭好开发环境
别担心,这一步非常简单。你只需要:
安装 Python 3.7+
去 python.org 下载最新版(推荐 3.9 或 3.10)。安装时记得勾选 “Add to PATH”。创建虚拟环境(强烈建议!)
虚拟环境能避免不同项目之间的依赖冲突。打开终端(Windows 用 CMD 或 PowerShell,Mac/Linux 用 Terminal),执行:# 创建名为 fastapi-demo 的虚拟环境 python -m venv fastapi-demo # 激活虚拟环境 # Windows: fastapi-demo\Scripts\activate # Mac/Linux: source fastapi-demo/bin/activate安装 FastAPI 和启动服务器
在激活的虚拟环境中运行:pip install fastapi uvicorn[standard]fastapi:核心框架uvicorn:高性能 ASGI 服务器(类似 Go 里的 Gin 框架用的 HTTP 服务器)
验证是否成功
运行以下命令,看到版本号就说明装好了:python -c "import fastapi; print(fastapi.__version__)"
✅ 避坑指南:不要直接用
pip install装到全局 Python!一定要用虚拟环境,这是我早期踩过的坑。
三、核心概念:用最简单的语言讲清楚
1. 什么是“路由”(Route)?
你可以把路由理解为“URL 路径”。比如 /users、/weather,每个路径对应一个功能。
from fastapi import FastAPI
app = FastAPI()
@app.get("/") # ← 这就是一个路由!
def home():
return {"message": "Hello, World!"}
访问 http://localhost:8000/ 就会返回 JSON 数据。
2. 什么是“请求方法”(GET/POST 等)?
@app.get():获取数据(比如查用户信息)@app.post():提交数据(比如注册新用户)@app.put()/@app.delete():更新或删除
3. 什么是“自动文档”?
启动服务后,访问:
http://localhost:8000/docs→ 自动生成的 Swagger UIhttp://localhost:8000/redoc→ 另一种风格的文档
不用写一行文档代码,所有接口、参数、返回格式都自动展示出来!这是我当初最震撼的功能。
四、实战:一步步写一个“待办事项”API
现在,我们来做一个超简单的 Todo List 后端。目标:实现“添加任务”和“查看所有任务”。
第一步:创建 main.py
在项目文件夹里新建 main.py,写入以下代码:
from fastapi import FastAPI
app = FastAPI()
# 模拟数据库(实际项目用 SQLite/PostgreSQL)
todos = []
@app.get("/todos")
def get_todos():
return todos
第二步:添加“新增任务”接口
我们需要接收用户提交的任务内容。使用 POST 请求,并定义数据结构。
from fastapi import FastAPI
from pydantic import BaseModel # ← 用于数据校验
app = FastAPI()
class TodoItem(BaseModel):
title: str
completed: bool = False # 默认未完成
todos = []
@app.get("/todos")
def get_todos():
return todos
@app.post("/todos")
def add_todo(todo: TodoItem): # ← 自动解析 JSON 并校验类型
todos.append(todo.dict())
return {"message": "Todo added!", "todo": todo}
第三步:启动服务器并测试
在终端运行:
uvicorn main:app --reload
main:app表示从main.py中导入app对象--reload表示代码修改后自动重启(开发时超有用!)
然后打开浏览器访问 http://localhost:8000/docs,你会看到两个接口:
| 接口路径 | 方法 | 功能 |
|---|---|---|
/todos |
GET | 获取所有任务 |
/todos |
POST | 新增一个任务 |
点击 POST 接口的 “Try it out”,输入:
{
"title": "学习 FastAPI",
"completed": false
}
点击 “Execute”,就能看到返回结果!再刷新 GET 接口,任务已经存在了。
🎯 这就是完整的后端开发流程:定义数据结构 → 写接口逻辑 → 自动获得文档 → 前端调用。
五、常见问题解答(新手必看!)
Q1:为什么我的代码改了没生效?
确保启动时加了 --reload 参数。如果没有,手动 Ctrl+C 停止再重启。
Q2:报错 ModuleNotFoundError: No module named 'fastapi'?
你可能没激活虚拟环境!先运行 source venv/bin/activate(Mac/Linux)或 venv\Scripts\activate(Windows)。
Q3:如何接收 URL 参数?比如 /user/123
使用路径参数:
@app.get("/user/{user_id}")
def get_user(user_id: int): # 自动转成整数
return {"user_id": user_id}
Q4:和 Go 框架(比如 Gin)比,FastAPI 性能差很多吗?
并不! 根据 TechEmpower 基准测试,FastAPI 的性能接近 Go 的 Gin 框架,远超 Flask 和 Django。关键在于它底层用了 Starlette(ASGI)和 Pydantic(C++加速),加上 Python 3.7+ 的 async 支持,速度飞起。
| 框架 | 语言 | 性能(Requests/sec) | 学习曲线 |
|---|---|---|---|
| FastAPI | Python | ~80,000 | ⭐⭐ |
| Gin | Go | ~100,000 | ⭐⭐⭐ |
| Flask | Python | ~5,000 | ⭐ |
| Django | Python | ~3,000 | ⭐⭐⭐⭐ |
注:数据为简化示意,实际取决于具体场景。
Q5:代码写完怎么分享给别人?
上传到 GitHub!这是程序员的“简历”。
- 初始化 Git 仓库:
git init echo "__pycache__/" > .gitignore echo "venv/" >> .gitignore - 提交代码:
git add . git commit -m "feat: add todo api" - 在 GitHub 新建仓库,按提示推送即可。
六、下一步学习建议
恭喜你完成了第一个 FastAPI 项目!接下来,我建议你按这个路径深入:
- 学数据库:用
SQLAlchemy或Tortoise ORM连接 SQLite,把todos存到硬盘而不是内存。 - 学认证:实现登录接口,用 JWT 保护敏感 API。
- 学部署:用 Docker 打包,部署到云服务器(比如阿里云轻量应用服务器)。
- 看官方文档:https://fastapi.tiangolo.com 写得极其友好,还带中文!
🔔 我的 B 站频道每周更新 FastAPI 实战视频,从“用户注册登录”到“WebSocket 聊天室”,全部开源在 GitHub。搜索“小K后端课”就能找到。
结语:别怕,后端没那么难
我当初学后端时,也觉得“API”、“路由”、“异步”这些词高深莫测。但其实,所有复杂的系统,都是从 return {"hello": "world"} 开始的。
FastAPI 的设计哲学就是:让简单的事情保持简单,复杂的事情变得可能。你不需要一开始就懂高并发、微服务,先跑通一个接口,建立信心,才是最重要的。
现在,打开你的编辑器,敲下那几行代码。当你在浏览器里看到自己写的 JSON 数据时,你会明白:我也能做后端了!
最后提醒:代码要动手写,不能只看。哪怕抄一遍,也比光读强十倍。
加油,未来的后端工程师!我们在 GitHub 见 🚀

评论 0