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

你有没有想过,怎么用 Python 做一个网站的“后台”?比如,当你在某个手机 App 上提交一个订单时,数据是怎么被接收和处理的?这背后靠的就是后端程序。
今天我们要介绍的工具叫做 FastAPI,它是一个基于 Python 的框架,专门用来快速搭建高性能的Web 后端服务。
简单来说,你可以把它理解成一个“快递小哥”,负责把你写好的代码变成一个可以接收请求、处理数据、并返回结果的“接口”。
👉 举个例子:你想开发一个天气预报的小程序,前端输入城市名后,向后端发起请求,后端调用接口获取天气数据,再返回给前端显示出来。这个过程中的“后端服务”就可以用 FastAPI 来实现!
相比传统的 Web 框架(如 Flask),FastAPI 有几个显著优势:
- 更快:异步支持,性能优秀
- 自带文档:访问
/docs路径就能看到自动生成的 API 接口文档(Swagger) - 类型安全:配合 Python 的类型注解,让代码更清晰也更可靠
那我们现在就来一步步上手吧!
环境准备:安装与配置

在开始写代码之前,我们需要准备好编程环境。别担心,这一部分非常简单,跟着步骤操作就可以了。
✅ 第一步:安装 Python
确保你电脑上已经安装了 Python。可以在终端或者命令行输入:
python --version
如果输出类似 Python 3.8.5 或更高版本,说明已安装好了。如果没有,请先去 官网 下载安装。
📌 新手常见问题:
Windows 用户推荐使用带有 GUI 安装器的 Python 安装包,并记得勾选“Add to PATH”。
✅ 第二步:创建项目文件夹
新建一个项目文件夹,比如叫 fastapi-tutorial,进入该目录后,在终端执行以下命令安装 FastAPI 和运行所需的服务器 Uvicorn:
pip install fastapi uvicorn
✅ 第三步:编写第一个应用
新建一个 Python 文件,例如叫 main.py,然后写下如下代码:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, World!"}
这就是我们第一个 FastAPI 应用!虽然看起来简单,但已经完成了一个最基本的 HTTP 接口。
接下来运行它:
uvicorn main:app --reload
参数解释:
main: 是你的 Python 文件名(不包括.py)app: 是 FastAPI 实例的名字--reload: 当代码变化时自动重启服务器,适用于开发阶段
启动后会看到这样的提示信息:
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
现在打开浏览器,访问 http://127.0.0.1:8000,你应该能看到如下 JSON 数据:
{
"message": "Hello, World!"
}
✅ 成功运行!恭喜你完成了 FastAPI 的第一次启动。
核心概念详解(初学者友好版)
刚才是“开胃菜”,现在我们来认识一些 FastAPI 的核心组件和术语,我会用尽可能通俗的语言来讲解。
🧭 1. FastAPI() 实例对象 —— 你整个项目的“总开关”
你每次写的 FastAPI 程序都从这里开始:
app = FastAPI()
你可以把 app 看作是整个 Web 服务的主控中枢,所有的路由和功能都会通过它注册进去。
🛣️ 2. 路由(Route)—— URL 地址和函数之间的绑定关系
路由决定当用户访问哪个地址时执行哪段代码。
@app.get("/hello")
def say_hello():
return {"greeting": "Hi there!"}
这段代码的意思是:当用户访问 /hello 这个网址时,会触发 say_hello() 函数,返回一段问候语。
常见的 HTTP 方法包括:
| 方法 | 用途简述 |
|---|---|
| GET | 获取数据(比如查天气) |
| POST | 提交数据(比如注册账号) |
| PUT | 更新数据(比如修改密码) |
| DELETE | 删除数据 |
💬 3. 请求参数(Query Parameters & Path Parameters)
有时候我们要根据用户提供的信息做出不同的反应。这时候就要用到请求参数了。
❖ 查询参数(Query Parameters)
URL 地址中 ?key=value 形式传递的数据。比如:
@app.get("/search")
def search(query: str):
return {"results": f"Searching for {query}"}
访问 http://127.0.0.1:8000/search?query=cat,你会看到:
{"results": "Searching for cat"}
❖ 路径参数(Path Parameters)
将参数直接放在路径中。比如:
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"id": user_id, "name": f"User{user_id}"}
访问 http://127.0.0.1:8000/users/5,结果为:
{"id": 5, "name": "User5"}
🗃️ 4. 使用 Pydantic 进行数据验证(可选但建议掌握)
FastAPI 很强大的一点是它能够自动校验传进来的数据格式是否符合要求,比如必须是整数、字符串长度限制等等。
为此我们需要引入 BaseModel:
from pydantic import BaseModel
class Item(BaseModel):
name: str
price: float
然后在接口中使用它:
@app.post("/items/")
def create_item(item: Item):
return {"item_name": item.name, "price": item.price}
发送如下 JSON:
{
"name": "Apple",
"price": 3.99
}
FastAPI 会自动帮你检查是否满足字段和类型要求,否则返回错误提示,非常有用!
实战项目:做一个简单的待办事项接口
现在我们来做个小项目练手,目标是实现一个待办事项列表管理接口,包含添加、查看、删除功能。
📦 步骤一:创建基础结构
继续使用刚才的 main.py,先加上必要的模块导入:
from fastapi import FastAPI
from pydantic import BaseModel
from typing import List, Optional
定义任务模型:
class TodoItem(BaseModel):
id: int
title: str
completed: bool = False # 默认未完成
创建 FastAPI 实例和模拟数据库:
app = FastAPI()
todos = []
🔧 步骤二:添加新任务
@app.post("/todos/")
def add_todo(todo: TodoItem):
todos.append(todo)
return {"status": "Todo added", "todo": todo}
访问接口 /todos/ 并 POST 添加任务即可。测试可以用 Postman 或 FastAPI 内置文档。
👀 步骤三:查看全部任务
@app.get("/todos/", response_model=List[TodoItem])
def get_todos():
return todos
🗑️ 步骤四:删除指定任务(按 ID)
@app.delete("/todos/{todo_id}")
def delete_todo(todo_id: int):
global todos
todos = [t for t in todos if t.id != todo_id]
return {"status": f"Deleted todo with id {todo_id}"}
运行项目后访问 http://127.0.0.1:8000/docs,系统会自动生成交互式 API 文档界面。你可以点击接口按钮进行测试!
新手常见问题解答

❓ 我在终端启动报错了:“No module named ‘fastapi’”,怎么办?
▶️ 因为你还没安装 FastAPI,回到终端运行:
pip install fastapi
如果提示权限不足,加 --user:
pip install fastapi --user
❓ 访问网页时显示空白或出错?
▶️ 先确认你是不是正确执行了下面的命令:
uvicorn main:app --reload
还要注意不要忘记加上 --reload,并且保持终端在运行状态。
❓ FastAPI 支持同步和异步吗?有什么区别?
✅ 支持!默认是同步方式,如果你需要处理高并发请求(比如百万级用户同时在线),可以使用 async def 声明异步接口。
比如:
@app.get("/async")
async def async_route():
return {"message": "This is async!"}
对于大部分初学者而言,同步方式就够用了。
❓ 如何调试我的 FastAPI 接口?
✅ 推荐两种方式:
- 使用内置文档
/docs测试接口 - 使用 Postman 或 curl 工具手动发送请求测试
示例 curl 命令:
curl -X POST http://localhost:8000/todos/ -H "Content-Type: application/json" -d '{"id": 1, "title": "Finish tutorial"}'
学习建议:下一步学什么?
到这里为止,你已经掌握了 FastAPI 的基础使用方法,可以构建自己的简单后端 API 了。那接下来该往哪里进步呢?我给你几个方向建议:
✅ 1. 深入学习请求/响应类型
了解不同类型的请求(GET、POST、PUT 等)及其适用场景。
✅ 2. 数据库连接入门
学习如何连接数据库(如 SQLite、PostgreSQL、MySQL),使用 ORM(如 SQLAlchemy 或 Tortoise-ORM)持久化保存数据。
✅ 3. 异步编程实践
尝试使用 async/await 编写异步接口,提升性能。
✅ 4. 验证与认证
学会设置 token、JWT 等身份验证机制保护你的 API。
总结

在这篇文章中,我们一起完成了 FastAPI 的初步学习旅程,包括:
- FastAPI 是什么,为什么适合 Python 初学者?
- 快速搭建环境并跑起你的第一个接口
- 掌握核心概念如路由、请求参数、数据模型等
- 动手完成了一个待办事项的小项目
- 解答了新手可能会遇到的典型问题
- 给出了后续的学习方向
FastAPI 上手容易,功能强大,非常适合希望进入后端开发领域的 Python 学习者。希望你能继续探索,写出属于自己的完整 Web 服务!
如果你觉得这篇文章对你有帮助,欢迎分享给其他正在学习的朋友,一起进步!🌟
📌 字数统计约:2672 字

评论 0