FastAPI 入门:Python 后端开发新手也能轻松上手

Tokens燃烧中
2026-01-05 14:53
阅读 1287

大家好,我是你们的老朋友,一名在大厂干了三年后端开发的工程师,业余时间也在 B 站做技术分享。最近收到不少私信,问能不能出一期 零基础学 FastAPI 的教程。说实话,我当初学后端开发的时候,也是一头雾水——不知道从哪开始、看不懂文档、连“API”是啥都搞不清楚。

所以今天,我就用最通俗的语言、最实用的代码示例,带大家从零开始搭建一个真正的 FastAPI 项目。无论你是学生、转行者,还是只会写点 Python 脚本的小白,只要跟着做,你就能跑起自己的第一个 Web 接口!


为什么选择 FastAPI?

FastAPI 是一个用 Python 编写的现代、快速(高性能)的 Web 框架,专门用来构建 API(应用程序接口)。你可以把它理解成“让 Python 能对外提供网络服务”的工具。

和其他框架(比如 Flask、Django)相比,FastAPI 有三大优势:

  1. 超快:性能接近 Node.js 和 Go,比 Flask 快很多。
  2. 自动生成文档:写完代码,自动就有漂亮的交互式 API 文档(Swagger UI)。
  3. 类型提示友好:用 Python 的 typing 模块,代码更清晰、错误更少。

我当初第一次看到自动生成的文档页面时,惊呆了——不用写一行前端代码,就能测试接口!这对新手太友好了。


第一步:搭建开发环境(5 分钟搞定)

别被“环境配置”吓到,其实就三步:

1. 安装 Python(3.7+)

确保你的电脑有 Python。打开终端(Windows 用 CMD 或 PowerShell,Mac/Linux 用 Terminal),输入:

python --version
# 或
python3 --version

如果显示 Python 3.7 以上,说明 OK。如果没有,请去 python.org 下载安装。

💡 小贴士:安装时记得勾选 “Add to PATH”,否则后面会报错找不到命令。

2. 创建虚拟环境(推荐)

虚拟环境能隔离项目依赖,避免不同项目“打架”。执行:

# 创建名为 fastapi-env 的虚拟环境
python -m venv fastapi-env

# 激活虚拟环境
# Windows:
fastapi-env\Scripts\activate
# Mac/Linux:
source fastapi-env/bin/activate

激活后,命令行前面会多出 (fastapi-env) 字样。

3. 安装 FastAPI 和 Uvicorn

FastAPI 本身不包含服务器,需要搭配 ASGI 服务器(如 Uvicorn)运行:

pip install fastapi uvicorn[standard]

✅ 验证是否成功:如果没报错,说明安装完成!


第二步:第一个 FastAPI 程序

新建一个文件 main.py,写入以下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def home():
    return {"message": "Hello, FastAPI!"}

然后在终端运行:

uvicorn main:app --reload

你会看到类似这样的输出:

INFO:     Uvicorn running on http://127.0.0.1:8000
INFO:     Started reloader process [xxxx]

打开浏览器,访问 http://127.0.0.1:8000,就能看到:

{"message": "Hello, FastAPI!"}

🎉 恭喜!你已经写出了第一个 API!

🔍 解释一下代码:

  • FastAPI() 创建应用实例
  • @app.get("/") 是一个“路由装饰器”,表示当用户访问根路径 / 时,调用下面的函数
  • --reload 参数表示代码修改后自动重启服务(开发时超方便!)

第三步:理解核心概念(用大白话讲)

什么是 API?

API(Application Programming Interface)就是“程序之间的对话方式”。比如你的手机 App 要从服务器拿数据,它就通过 API 发请求,服务器返回 JSON 数据。

路由(Route)和端点(Endpoint)

  • 路由:URL 路径,比如 /users/items/123
  • 端点:处理该路径的函数,比如 get_user()create_item()

请求方法(HTTP Methods)

常见的有:

  • GET:获取数据(如查看文章)
  • POST:创建数据(如注册用户)
  • PUT / PATCH:更新数据
  • DELETE:删除数据

FastAPI 用装饰器对应这些方法:

@app.get("/read")
@app.post("/create")
@app.put("/update")
@app.delete("/delete")

第四步:动手做一个“待办事项”小项目

光看不动手等于没学!我们来做一个简单的 Todo 列表 API。

功能需求

  • 查看所有待办事项(GET)
  • 添加新待办事项(POST)
  • 根据 ID 查看某一项(GET)
  • 删除某一项(DELETE)

步骤 1:定义数据模型

FastAPI 推荐用 Pydantic 定义数据结构。修改 main.py

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from typing import List

app = FastAPI()

# 定义 Todo 项的数据结构
class TodoItem(BaseModel):
    id: int
    title: str
    completed: bool = False

# 模拟数据库(实际项目用数据库,这里先用列表)
todos = [
    TodoItem(id=1, title="学习 FastAPI", completed=False),
    TodoItem(id=2, title="写一篇技术分享", completed=True)
]

步骤 2:实现 API 接口

继续在 main.py 中添加:

# 获取所有 todos
@app.get("/todos", response_model=List[TodoItem])
def get_todos():
    return todos

# 根据 ID 获取单个 todo
@app.get("/todos/{todo_id}", response_model=TodoItem)
def get_todo(todo_id: int):
    for todo in todos:
        if todo.id == todo_id:
            return todo
    raise HTTPException(status_code=404, detail="Todo not found")

# 创建新 todo
@app.post("/todos", response_model=TodoItem)
def create_todo(todo: TodoItem):
    # 检查 ID 是否重复
    for t in todos:
        if t.id == todo.id:
            raise HTTPException(status_code=400, detail="ID already exists")
    todos.append(todo)
    return todo

# 删除 todo
@app.delete("/todos/{todo_id}")
def delete_todo(todo_id: int):
    for i, todo in enumerate(todos):
        if todo.id == todo_id:
            todos.pop(i)
            return {"message": "Deleted successfully"}
    raise HTTPException(status_code=404, detail="Todo not found")

步骤 3:测试你的 API

重新运行:

uvicorn main:app --reload

然后访问 http://127.0.0.1:8000/docs —— 看!自动生成的交互式文档出现了!

你可以直接在网页上:

  • 点击 GET /todos → 点 “Try it out” → Execute,看到所有待办事项
  • 点击 POST /todos → 输入 JSON(如 {"id": 3, "title": "喝杯咖啡"})→ Execute,添加新任务

💡 这就是 FastAPI 的魅力:不用 Postman,不用写前端,直接在浏览器里调试!


新手常见问题 & 避坑指南

❓ 问题 1:为什么我的代码改了但页面没更新?

✅ 检查是否加了 --reload 参数。没有它,Uvicorn 不会监听文件变化。

❓ 问题 2:报错 ModuleNotFoundError: No module named 'fastapi'

✅ 原因:没在虚拟环境中安装,或者没激活虚拟环境。
解决:重新激活虚拟环境,再 pip install fastapi uvicorn

❓ 问题 3:POST 请求怎么传 JSON?

✅ 在 Swagger UI(/docs)里,点击 “Try it out”,会弹出 JSON 输入框。
或者用 curl 测试:

curl -X POST "http://127.0.0.1:8000/todos" \
  -H "Content-Type: application/json" \
  -d '{"id": 4, "title": "睡觉"}'

❓ 问题 4:如何处理路径参数和查询参数?

  • 路径参数/todos/{todo_id} → 函数参数 todo_id: int
  • 查询参数/search?q=fastapi → 函数参数 q: str = None

示例:

@app.get("/search")
def search(q: str = None, limit: int = 10):
    return {"query": q, "limit": limit}

访问 /search?q=python&limit=5 即可。


下一步学什么?我的学习建议

FastAPI 只是后端开发的起点。如果你想深入,我建议按这个路径走:

阶段 学习内容 推荐资源
基础巩固 异步编程(async/await)、Pydantic 高级用法 FastAPI 官方文档
数据库 SQLAlchemy + PostgreSQL / MySQL 《FastAPI and SQLAlchemy》教程
认证授权 JWT、OAuth2 FastAPI 安全章节
部署上线 Docker、Nginx、云服务器(如阿里云) 我的 B 站部署实战视频

📌 我的经验:不要一上来就学“高并发”“微服务”,先把 CRUD(增删改查)玩熟,再逐步扩展。


结语:技术分享的意义

写这篇教程,是因为我相信:好的技术不应该被复杂的术语挡住。FastAPI 降低了后端开发的门槛,让像你我这样的普通人也能快速做出有用的东西。

我当初学的时候,也是从一行 print("Hello World") 开始的。现在,我已经能用 FastAPI 构建百万用户量级的服务。你也可以。

动手写代码,永远比只看教程有效十倍。

现在,关掉这篇文章,打开你的编辑器,敲下那几行代码吧。你的第一个 API,正在等你唤醒。


作者:B站技术UP主 | 大厂后端工程师
本文为原创技术分享,欢迎转发,转载请注明出处。
如果你觉得有帮助,欢迎关注我的 B 站账号,我会持续更新 Python 后端实战系列!

评论 0

最热最新
暂无评论
Tokens燃烧中Lv.1
0
影响力
0
文章
0
粉丝