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

你是不是经常听到“网站背后的数据是怎么处理的?”、“用户登录功能是怎么实现的?”这类问题?这些其实都属于后端开发的范畴,而FastAPI就是一门帮助你快速构建后端服务的强大工具。
简单来说,FastAPI是一个基于Python语言的Web框架,专门用来创建高性能、易于使用、自动化文档化的网络应用。比如:
- 你在使用的手机APP背后,可能就是由FastAPI搭建的服务器在接收你的请求(例如登录)、返回数据。
- 很多智能设备与云端交互时,背后都是类似FastAPI这样的后端技术在运作。
用一个生活化的类比来理解它:如果你把整个网站或APP看成一家餐厅,那么前端就像是顾客能看到的餐桌和菜单,而后端就像厨房里的厨师和服务生——他们负责接收顾客点单、做出菜品并送过去。而FastAPI,就是让这个厨房运转更高效的一套系统!
FastAPI的优势:
- 快速:支持异步编程,性能接近Go语言的水平
- 易用:代码简洁,开发效率高
- 自动文档:只要你写好接口逻辑,系统会自动生成网页版API说明文档
- 支持现代标准:支持OpenAPI和JSON Schema等主流规范
接下来我们就从零开始,一步步学会用FastAPI来搭建自己的第一个后端服务吧!
环境准备:安装FastAPI所需的一切

我们先来准备好开发环境。这一步对刚接触编程的朋友来说可能有点陌生,但别担心,我会一步一步带着你走。
第一步:安装Python
FastAPI只能运行在Python 3.6及以上版本。如果你还不确定有没有安装Python,可以打开电脑上的终端(Windows按Win + R输入cmd,Mac/Linux直接打开终端),然后输入:
python --version
如果看到类似Python 3.9.7这样的输出,说明你已经有合适的版本了。如果没有,请去https://www.python.org官网下载安装最新的Python。
⚠️ 小提示: 安装Python时记得勾选“Add to PATH”选项,否则后续可能会出现命令找不到的问题。
第二步:安装FastAPI框架
安装完Python之后,我们要通过它的包管理器pip来安装FastAPI以及一个叫Uvicorn的服务器组件,这是启动FastAPI应用所必需的。
在终端里依次运行以下两条命令:
pip install fastapi
pip install uvicorn
✅ 安装完成后验证一下是否成功: 在终端输入:
python -c "import fastapi; print(fastapi.__version__)"如果有版本号输出,说明FastAPI已经安装好了!
第三步:准备你的开发工具
推荐使用VS Code作为代码编辑器(免费且功能强大)。你可以去 https://code.visualstudio.com/ 下载安装。
安装完成之后,建议安装两个实用插件:
- Python插件(用于语法高亮、智能提示)
- Pylance插件(用于更快更好的代码分析)
这样你就准备好一切开发条件啦!现在我们来进入真正的学习内容——了解FastAPI的核心概念。
核心概念讲解:五个关键词让你看懂FastAPI

对于刚接触后端开发的新手来说,“什么是接口?”、“路由是什么意思?”等问题常常让人困惑。下面我会用非常通俗易懂的方式,带你看懂FastAPI中最重要的五个核心概念。
1. 路由(Route):相当于网页地址
想象你在网上访问过很多网址,比如:
https://example.com/homehttps://example.com/about
这些不同页面背后的程序代码就是靠**路由(Route)**来分派到不同的处理函数的。在FastAPI中,我们会给每个功能编写一个“处理函数”,并通过装饰器的方式把它绑定到某个路由路径上。
举个例子:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "欢迎来到首页"}
这段代码的意思是:
- 当你访问
http://127.0.0.1:8000/的时候,就会执行read_root()函数,并返回一个消息。
2. 请求方法(HTTP Method):告诉服务器你要干什么
当你上网买东西时,你可能会经历以下步骤:
- 浏览商品(GET请求)
- 加入购物车(POST请求)
- 修改数量(PUT请求)
- 删除商品(DELETE请求)
这些操作分别对应着不同的HTTP请求方法。常见的几种如下:
| 方法 | 含义 |
|---|---|
| GET | 获取资源(最常用) |
| POST | 提交数据(添加资源) |
| PUT | 更新数据 |
| DELETE | 删除数据 |
例如:
@app.post("/items")
def create_item():
return {"status": "新增物品成功"}
@app.put("/items/1")
def update_item():
return {"status": "更新物品成功"}
3. API文档(Swagger UI):自动帮你生成使用手册
还记得开头说FastAPI的一个优点是可以自动生成网页文档吗?这就是它的亮点之一!
启动服务器后,访问:
http://localhost:8000/docs
你会看到一个漂亮的界面,里面展示了你写的每一个接口的信息。包括:
- 接口路径
- 支持的请求方法
- 参数示例
- 返回结果示例
你可以直接在这个界面上测试你的接口!
4. 异步处理(async def):让服务器能同时干更多事
这是一个进阶一点的概念,但理解它对你以后优化性能很重要。默认情况下,程序是一条一条顺序执行的。但是当遇到需要等待外部响应(比如数据库查询)的情况时,如果阻塞等待,整个服务器就卡住了。
这时候我们可以用async def定义一个异步函数:
@app.get("/async")
async def async_example():
return {"status": "这是一个异步接口"}
这表示:“我现在要干一件事,但我不等它做完,我先去干别的,等它做完再来通知我。”
这对于并发访问量高的场景非常有用。
5. 模型验证(pydantic模型):帮你检查收到的数据对不对
设想这样一个场景:你正在做一个注册功能,用户应该提交用户名和邮箱。但是有人提交了奇怪的东西怎么办?
这时候我们需要做参数验证。FastAPI借助一个叫Pydantic的库,可以直接用模型类来做数据结构定义和校验。
来看一个例子:
from pydantic import BaseModel
from fastapi import FastAPI
app = FastAPI()
class User(BaseModel):
username: str
email: str
@app.post("/users")
def create_user(user: User):
return user
这时候如果你尝试发送一个没有username或者email格式不正确的数据,FastAPI会自动返回错误提示,非常贴心!
实战项目:跟着教程一起写一个天气预报API

光听理论还不够,我们来实际动手做个小项目。接下来我们要写一个简单的天气预报接口。用户可以传入城市名,系统返回该城市的模拟天气信息。
第一步:创建项目文件夹和基础代码
新建一个文件夹,比如叫做weather_api。在里面创建一个文件,取名叫main.py,然后写下基础代码:
from fastapi import FastAPI
app = FastAPI()
第二步:添加获取天气的接口
我们先实现一个简单的GET接口,用户可以通过URL传入城市名:
@app.get("/weather/{city}")
def get_weather(city: str):
# 模拟数据
weather_data = {
"北京": "晴朗",
"上海": "多云",
"深圳": "阵雨"
}
return {"city": city, "weather": weather_data.get(city, "未知天气")}
这里我们用了路径参数 {city} 和字符串变量city,你可以测试一下:
访问 http://127.0.0.1:8000/weather/北京 应该会返回:
{
"city": "北京",
"weather": "晴朗"
}
如果输入未被模拟的城市,比如广州,会显示“未知天气”。
第三步:加一个POST接口,模拟真实请求
这次我们让用户以POST方式提交城市名,适合更复杂的数据格式。
先导入pydantic模型类:
from pydantic import BaseModel
再定义一个模型:
class CityName(BaseModel):
city: str
然后写一个POST接口:
@app.post("/weather")
def post_weather(city_info: CityName):
# 模拟数据
weather_data = {
"北京": "晴朗",
"上海": "多云",
"深圳": "阵雨"
}
return {"city": city_info.city, "weather": weather_data.get(city_info.city, "未知天气")}
试着用Swagger UI的接口测试一下这个POST接口吧!
第四步:启动服务器运行你的第一个FastAPI项目
回到终端,在你的项目目录下运行:
uvicorn main:app --reload
这时你会看到:
INFO: Uvicorn running on http://127.0.0.1:8000
恭喜!你现在拥有一个可以工作的天气预报API了!
常见问题解答:新手必读FAQ

学新东西总会有各种疑问。下面整理了一些新手在学习FastAPI过程中最常见的问题和解决方案。
Q1:为什么我在浏览器里访问不了我的接口?
答: 请确认几点:
- 你的FastAPI应用是否正常运行?
- 地址是否正确?默认地址是
http://127.0.0.1:8000 - 你访问的路径是否与定义的一致?例如你写了
@app.get("/hello"),就要访问http://127.0.0.1:8000/hello
Q2:我写的代码报错,提示“No module named 'fastapi'”
答: 这是因为你的环境中没有安装fastapi模块。请重新运行命令:
pip install fastapi
Q3:POST接口收不到数据怎么办?
答: 首先检查是否有定义pydantic模型类。其次,注意发送请求的Content-Type应为application/json,可以用Postman或curl测试:
curl -X POST http://127.0.0.1:8000/weather \
-H "Content-Type: application/json" \
-d '{"city":"广州"}'
Q4:我修改了代码为什么没生效?
答: 如果你是用--reload参数运行的,保存代码后Uvicorn会自动重载服务。但有时需要刷新页面,或者重启终端。也可以手动停止再运行试试。
Q5:我能不用Swagger自带的测试接口吗?怎么用别的测试工具?
答: 当然可以。Swagger只是提供了便捷的可视化调试入口。你也可以用像Postman、Insomnia、甚至curl命令进行测试,只要构造出对应的请求即可。
学习建议:下一步该往哪走?
恭喜你完成了第一个FastAPI项目!你现在已经掌握了如何用FastAPI搭建一个基本的后端服务,并能处理常见的GET、POST请求,还了解了接口文档、模型验证等重要知识点。
不过这只是后端开发的起点,接下来你还可以继续深入这些方向:
1. 数据库存储
- 使用SQLAlchemy连接MySQL或SQLite
- 利用ORM(对象关系映射)简化数据库操作
2. 用户认证与权限控制
- JWT token验证
- 权限中间件配置
- 登录登出流程实现
3. 接口安全
- 数据验证增强
- 防止CSRF/XSS攻击
- 访问频率限制(Rate Limiting)
4. 部署上线
- 使用Gunicorn+Uvicorn部署生产环境
- 利用Docker打包应用
- 配置Nginx反向代理
推荐资源:
- 官方文档:https://fastapi.tiangolo.com
- GitHub实战项目:搜索“FastAPI examples”
- 视频课程平台:B站、YouTube有很多中文入门视频
结语
FastAPI作为新一代Python Web框架,集速度、易用性与专业性于一身,非常适合想快速掌握后端开发的新手程序员。本文从环境搭建到实战开发再到答疑解惑,带你走过从零到能写出独立服务的全过程。希望你能坚持实践,不断探索FastAPI更强大的功能,最终成为独当一面的后端开发者!

评论 0