FastAPI入门:Python后端开发新手指南
开篇:FastAPI是什么?我能用它做什么?

你好!欢迎来到《FastAPI入门》教程。在这篇文章中,我们将一起学习 FastAPI,这是一个用 Python 写的现代化后端框架,特别适合做 API(接口)服务。
为什么选 FastAPI?
- 速度快:基于 Python 异步特性,性能接近 Node.js 和 Go。
- 自动生成文档:访问
/docs就能看到你写的接口说明页面(自带 UI 界面)。 - 类型友好:支持 Python 的类型提示(Type Hint),让你的代码更清晰、更安全。
- 轻量级:简单易学,不依赖复杂配置,上手非常快!
它能用来做什么?
FastAPI 常用于:
- 做小程序或 App 后台接口(例如登录注册、数据查询等)
- 搭建网站后台的数据处理模块
- 创建企业内部系统之间的数据通信桥梁
- 结合数据库进行数据增删改查操作
总之,它是一个“把你的 Python 代码暴露给其他设备使用”的好工具。
环境准备:让我们先搭个舞台

要开始写 FastAPI 项目,你需要安装一些必要的软件和库。我们一步步来:
步骤一:安装 Python
确保你已经安装了 Python 3.8 及以上版本。你可以打开命令行输入以下命令查看:
python --version
如果没有安装,可以去 Python官网 下载最新版。
步骤二:安装 FastAPI 和 Uvicorn
我们可以使用 pip 安装 FastAPI 及其运行服务器 Uvicorn:
pip install fastapi uvicorn
✅ 小贴士:
fastapi是核心框架uvicorn是 FastAPI 的启动器,类似一个“小服务器”
核心概念:用最简单的语言讲清楚关键点

学习任何新技术前,先了解它的基本组件会事半功倍。下面是一些 FastAPI 最基础也最重要的概念:
1. 路由(Route)——你是怎么找到这个功能的?
想象一下你在访问某个网页,比如:
URL 中 /user/profile 这部分就是“路由”。在 FastAPI 中,我们通过装饰器定义这些路径。
示例代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def home():
return {"message": "欢迎来到主页"}
@app.get("/")表示当用户访问根路径时,调用home()函数。- 你可以换成
@app.post()来创建 POST 请求接口。
2. 请求方法(HTTP Method)——你希望别人怎么使用你提供的功能?
常见的 HTTP 方法有:
| 方法 | 用途 |
|---|---|
| GET | 获取数据(比如获取用户信息) |
| POST | 提交数据(比如注册账号) |
| PUT | 更新数据(比如修改个人信息) |
| DELETE | 删除数据 |
示例代码(新增一个 POST 接口):
@app.post("/register")
def register_user(name: str, password: str):
return {
"name": name,
"status": "注册成功"
}
当你发送一个 POST 请求到 /register,就能接收到传入的参数并返回结果。
3. 参数传递方式——怎么让别人告诉你要执行什么内容?
在请求中,可以通过多种方式传参数:
a) 查询参数(Query Parameters)
就是在 URL 后加上问号后面的参数,比如:
http://localhost:8000/search?query=苹果
FastAPI 自动识别这些参数:
@app.get("/search")
def search(query: str):
return {"result": f"你搜索的内容是:{query}"}
b) 路径参数(Path Parameters)
嵌在路径里的参数,常用于表示 ID 或用户名:
@app.get("/user/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
访问 /user/123 时,输出 { "user_id": 123 }。
c) 请求体参数(Body Parameters)
适用于 POST、PUT 等方法,数据以 JSON 形式提交:
from pydantic import BaseModel
class UserCreate(BaseModel):
username: str
email: str
@app.post("/users/")
def create_user(user: UserCreate):
return {"message": "用户已创建", "user": user}
这里用到了 Pydantic 来自动校验请求体中的字段是否正确。
4. 自动生成文档 Swagger 和 ReDoc ——不用手动写接口文档啦!
FastAPI 非常强大的一个功能是,它可以自动为你生成接口文档!
启动服务后,访问 http://localhost:8000/docs
即可看到 Swagger 交互式文档界面,你甚至可以直接在这个页面测试接口!访问 http://localhost:8000/redoc
则会看到 ReDoc 版本的文档风格。
实战项目:从零开始搭建一个天气查询接口

理论讲得差不多了,现在我们动手做一个小项目吧!
目标:构建一个可以根据城市名查询当前天气的小型接口。
第一步:编写接口结构
from fastapi import FastAPI
app = FastAPI()
@app.get("/weather")
def get_weather(city: str):
return {"city": city, "temperature": "25°C", "condition": "晴天"}
保存为文件 main.py。
第二步:运行服务器
在终端运行下面这条命令:
uvicorn main:app --reload
main: 指向你的 Python 文件名(不含 .py)app: 你实例化的 FastAPI 对象变量名--reload:热重载模式,在开发时自动重启服务器(生产环境中不要用)
现在你可以访问下面两个链接:
试着在文档里调用 /weather 接口,传入城市名如 Shanghai,你会得到一个模拟的天气回复。
常见问题解答区 🧾
Q1:运行时提示“找不到 uvicorn”怎么办?
A:可能是虚拟环境未激活或 pip 安装目录不在系统路径中。尝试重新安装或检查 PATH 设置。
Q2:POST 请求总是报错 “invalid json”
A:检查你的 JSON 格式是否有语法错误,或者是否遗漏了必要的字段(尤其是用了 Pydantic 模型的情况下)。
Q3:如何在本地调试代码时自动重启?
A:添加 --reload 参数即可。但切记只用于开发阶段,不要在正式生产环境使用!
Q4:我写的接口为什么在浏览器里无法看到响应?
A:确保使用正确的 URL 格式访问,并且没有拼写错误。另外某些浏览器会拦截非 HTML 类型响应,请使用 Postman 或 curl 测试。
学习建议:下一步该怎么学下去?

恭喜你完成 FastAPI 的第一次实战练习!接下来推荐你继续学习的方向如下:
✔️ 阶段一:进阶知识点
- 使用 Pydantic 做复杂的参数校验
- 添加中间件(Middleware)处理统一日志或权限控制
- 使用异步函数提升性能
- 数据库连接:集成 SQLAlchemy 或 Tortoise ORM
✔️ 阶段二:部署上线
- 打包为 Docker 镜像
- 使用 Nginx+Uvicorn 部署生产环境
- 使用 Gunicorn 或 Hypercorn 多进程管理
🔍 推荐资源
- FastAPI 官方文档(中文翻译版)
- Pydantic 官网
- B站/YouTube 搜索关键词“FastAPI 教程”也有不少优质视频资源
结语:FastAPI 很快,学习也不慢
虽然我们只是迈出了第一步,但你会发现,FastAPI 的学习曲线并不陡峭。只要你敢写第一行代码,后面的一切都会变得越来越有趣。
祝你编程愉快,成为未来出色的后端开发者!🎉
📌 附录:完整示例代码整理
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class UserCreate(BaseModel):
username: str
email: str
@app.get("/")
def home():
return {"message": "欢迎来到 FastAPI"}
@app.get("/user/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
@app.post("/users/")
def create_user(user: UserCreate):
return {"message": "用户已创建", "user": user}
@app.get("/weather")
def get_weather(city: str):
return {"city": city, "temperature": "25°C", "condition": "晴天"}
复制上面代码试试看,你已经具备了一个迷你后端的功能了!💡

评论 0