FastAPI入门:Python后端开发新手指南

创新-孙娟-工程师
2025-06-29 08:19
阅读 392

开篇:FastAPI是什么,它能用来做什么?

开篇:FastAPI是什么,它能用来做什么?

你可能听说过“网站的前端”和“网站的后端”。前端指的是用户看到、交互的那一部分,比如按钮、页面布局等。而后端则是负责处理这些操作的部分,例如存储用户登录信息、提供数据接口等等。

FastAPI 就是这样一个用于构建后端服务(也就是Web API)的 Python 框架。它的主要特点是:

  • 🐍 基于Python语言:使用简单易学的Python语法来编写代码。
  • 速度快:比一些传统框架如 Flask 更快,接近 Node.js 的性能。
  • 🔑 自带文档系统:你写完接口以后,FastAPI会自动生成漂亮的在线文档,方便调试和交流。
  • 📦 现代特性:支持异步编程,适合处理高并发场景。

在本教程中,我们将从零开始教你如何安装和使用 FastAPI,完成一个简单的项目,并解答你在学习过程中可能遇到的问题。


环境准备:一步步搭建开发环境

环境准备:一步步搭建开发环境

在开始编码之前,我们先准备好开发环境。这一步是很多初学者容易卡住的地方,但别担心,只要按照步骤一步步来,就不会出问题。

1. 安装 Python

首先确保你的电脑上已经安装了 Python。你可以通过终端(Windows 是命令提示符或 PowerShell)输入以下命令查看是否已安装 Python:

python --version

或者:

python3 --version

如果你看到类似 Python 3.9.1 或更高版本的输出,那说明你已经安装好了 Python。如果没有,请前往 Python官网 下载并安装最新稳定版的 Python。

💡 提示:Mac 和 Linux 用户一般默认有 Python,但建议安装最新的 Python 3.x 版本。

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

为了保持我们的项目依赖独立,推荐使用 Python 自带的 venv 来创建一个虚拟环境。

打开命令行工具,在你喜欢的目录下执行以下命令:

python -m venv fastapi_env

然后激活这个虚拟环境:

  • Windows 上运行:
fastapi_env\Scripts\activate
  • macOS/Linux 上运行:
source fastapi_env/bin/activate

你现在应该看到命令行前面多了 (fastapi_env) 的前缀,表示你已经进入了一个隔离的开发环境。

3. 安装 FastAPI 和 Uvicorn

FastAPI 本身只是一个框架,我们需要用一个叫做 Uvicorn 的服务器来启动它。

在激活的虚拟环境中,运行以下命令安装必要的包:

pip install fastapi uvicorn

等待安装完成后,就可以正式开始编写你的第一个 FastAPI 应用了!


核心概念讲解:从最基础的说起

在真正开始写代码前,让我们先了解几个最重要的概念。理解这些概念,会让你更容易跟上后面的实践内容。

🌟 FastAPI 应用的基本结构

FastAPI 的核心是一个应用对象,通常我们会创建一个名为 app 的变量来表示它。

from fastapi import FastAPI

app = FastAPI()

这段代码导入了 FastAPI 类,并创建了一个实例 app,这就是我们整个 Web 服务的核心对象。

📬 路由(Routing)

路由决定了用户访问哪个地址时,执行哪一段代码。例如:

  • 访问 /hello 返回一句问候语;
  • 访问 /users/123 返回用户编号为 123 的信息;

FastAPI 使用装饰器语法将函数与 URL 路径绑定起来,非常直观。

举个例子:

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

这个函数的意思是:

  • 当有人访问根路径(/);
  • 并且使用 HTTP 的 GET 方法;
  • 就返回一个 JSON 对象:{"message": "Hello, World!"}

你可以测试一下效果。先把这个代码保存为 main.py,然后在命令行运行:

uvicorn main:app --reload

解释一下这个命令:

  • uvicorn:我们要使用的服务器;
  • main:app:表示我们要加载 main.py 文件中的 app 实例;
  • --reload:开启热重载功能,在代码修改后自动重启服务,方便调试。

运行后,你会看到类似以下输出:

INFO:     Uvicorn running on http://127.0.0.1:8000

现在打开浏览器,访问 http://localhost:8000,你应该能看到页面显示:

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

📄 自动生成的文档界面

FastAPI 非常贴心地提供了两个内置的 API 文档界面:

这两个页面会自动列出你写的每一个 API 接口,并允许你直接点击“Try it out”进行测试。

这极大地简化了前后端联调的过程。

✅ 请求方法(HTTP Methods)

你可能听说过 GET、POST、PUT、DELETE 这些词,它们对应的就是客户端(浏览器、App、小程序等)向服务器发起请求的不同方式。

请求方法 含义
GET 获取资源
POST 提交新数据
PUT 更新已有数据
DELETE 删除数据

在 FastAPI 中,可以通过不同的装饰器来定义不同请求方式的接口:

@app.get("/items/")
async def read_items():
    ...

@app.post("/items/")
async def create_item():
    ...

@app.put("/items/{item_id}")
async def update_item(item_id: int):
    ...

@app.delete("/items/{item_id}")
async def delete_item(item_id: int):
    ...

这些方法可以让你根据业务需求灵活设计接口。


实战项目:做一个“学生信息管理系统”的基础 API

我们现在通过一个具体的项目,练习如何用 FastAPI 构建一个简单的数据接口。

项目目标

我们要实现一个简易的学生管理 API,包含以下功能:

  1. 查看所有学生 → GET /students
  2. 添加新学生 → POST /students
  3. 查看某个学生详情 → GET /students/{student_id}
  4. 删除某个学生 → DELETE /students/{student_id}

第一步:创建项目文件

新建一个文件夹,比如叫 student_api,然后在里面创建一个 main.py 文件,作为主程序。

第二步:导入需要的模块并初始化 app

from fastapi import FastAPI
from pydantic import BaseModel
from typing import Optional

app = FastAPI()

# 用于模拟数据库的数据结构
students_db = {
    1: {"name": "张三", "age": 18, "grade": "高三"},
    2: {"name": "李四", "age": 17, "grade": "高二"},
    3: {"name": "王五", "age": 16, "grade": "高一"}
}

这里我们使用字典来模拟数据库中的学生数据。

第三步:定义模型类(Schema)

为了让提交的数据格式统一,我们可以使用 pydantic 提供的 BaseModel 来定义数据格式:

class StudentCreate(BaseModel):
    name: str
    age: int
    grade: str

class StudentResponse(StudentCreate):
    id: int
  • StudentCreate 是添加学生时需要提交的数据;
  • StudentResponse 是返回给用户的完整数据。

第四步:编写各个 API 接口

1. 获取所有学生列表

@app.get("/students")
def get_students():
    return students_db.values()

访问 /students 会返回当前所有的学生信息。

2. 添加新学生

@app.post("/students", response_model=StudentResponse)
def add_student(student: StudentCreate):
    new_id = max(students_db.keys()) + 1 if students_db else 1
    students_db[new_id] = student.dict()
    return {"id": new_id, **student.dict()}

这里使用 response_model 告诉 FastAPI 我们希望返回的数据结构是 StudentResponse

3. 获取某个学生的详细信息

@app.get("/students/{student_id}")
def get_student(student_id: int):
    if student_id not in students_db:
        return {"error": "Student not found"}
    return students_db[student_id]

注意,这里的 {student_id} 是路径参数,FastAPI 会自动提取出来传给函数。

4. 删除某个学生

@app.delete("/students/{student_id}")
def delete_student(student_id: int):
    if student_id in students_db:
        del students_db[student_id]
        return {"message": f"Student {student_id} deleted"}
    return {"error": "Student not found"}

第五步:运行并测试 API

保存好以上代码后,在命令行启动服务:

uvicorn main:app --reload

然后打开 Swagger UI 页面:http://localhost:8000/docs

你应该能看到四个接口已经列出来了。你可以分别点击每个接口的 “Try it out” 按钮来发送请求。

✅ 到此为止,我们就完成了一个基础的学生管理 API 的开发!


常见问题解答(FAQ)

在初学 FastAPI 时,常常会遇到以下几个问题:

❓Q1:为什么我的 API 返回的是 HTML 页面而不是 JSON 数据?

可能是你不小心访问了错误的路径,或者是没有正确定义响应类型。

  • 确保你访问的是正确的 URL;
  • 如果你希望明确指定返回 JSON 数据,可以使用 return {"key": "value"},FastAPI 默认就会以 JSON 形式返回;
  • 可以为接口加上 response_class=JSONResponse 明确指定返回类型。

❓Q2:启动时报错 “ModuleNotFoundError: No module named ‘uvicorn’”

说明你没有正确安装依赖。请确保执行了如下命令:

pip install fastapi uvicorn

如果仍然报错,检查是否进入了正确的虚拟环境。


❓Q3:FastAPI 生成的文档页打不开,或者显示空白?

这种情况一般是因为网络问题,或者浏览器缓存导致。

尝试更换浏览器,或者访问 http://127.0.0.1:8000/docs(而不是 localhost)试试。


❓Q4:我想在 API 中接收中文参数怎么办?

FastAPI 默认支持 UTF-8 编码,可以直接接收中文参数,不需要额外设置。

例如:

@app.get("/search/{keyword}")
def search(keyword: str):
    return {"keyword": keyword}

访问 /search/你好世界,就能正确接收到 “你好世界”。


❓Q5:FastAPI 支持连接真正的数据库吗?

当然支持!目前我们只是用了一个字典来临时保存数据,但在实际项目中,你可以结合 SQLAlchemy、Tortoise ORM 等库连接 MySQL、PostgreSQL 等真实数据库。

这是进阶学习的重要一步,我们在下一节会介绍学习路线。


学习建议:下一步该怎么学?

恭喜你完成了 FastAPI 的第一个项目!这是一个不错的起点,但要成为一名合格的后端开发者,还有许多技能需要掌握。

以下是学习建议的进阶路径:

🔹 1. 掌握更多 FastAPI 功能

  • 异步函数:async def 函数
  • 请求验证与错误处理
  • 路由分组与中间件
  • 跨域设置(CORS)
  • 表单和上传文件的处理

推荐阅读官方文档:FastAPI 官方中文文档

🔹 2. 学习数据库操作

FastAPI 本身不提供数据库支持,但它与各种 ORM 配合非常友好:

  • 学习 SQLAlchemy(适合专业级应用)
  • 尝试 Tortoise ORM(轻量级,更易上手)
  • 练习将之前的内存字典替换为真实的数据库

🔹 3. 学习 RESTful API 设计规范

学会写出符合 REST 风格的 API,对团队协作非常重要:

  • 如何命名 URL?
  • 如何设计错误码?
  • 如何分页查询?

推荐阅读书籍《RESTful Web APIs》

🔹 4. 学习部署上线基础知识

学会了本地开发后,你需要把项目部署到线上服务器:

  • Docker 容器化打包
  • Nginx + Uvicorn 配置
  • 使用云平台(阿里云、腾讯云、Heroku 等)

🔹 5. 综合项目实战

尝试做一个完整的项目,比如:

  • 博客系统
  • 电商商品管理系统
  • 在线考试系统

可以锻炼你的综合能力,同时积累作品集。


结语:继续前行吧,未来的后端工程师!

API接口文档-1

FastAPI 是一个非常适合初学者上手的后端框架,既强大又简单,既能快速开发原型,也能支撑起复杂的企业级应用。

学习编程就像学骑自行车——起初总是摇摇晃晃,但一旦掌握技巧,就能越骑越顺。希望这篇教程能成为你学习道路上的一盏灯塔,帮你少走弯路,轻松入门!

记得多写代码,多查资料,多动手练项目,坚持下去,你一定可以成为一名出色的 Python 后端开发者!


📌 附录:常用命令速查表

用途 命令
安装 FastAPI & Uvicorn pip install fastapi uvicorn
启动服务 uvicorn main:app --reload
检查 Python 版本 python --versionpython3 --version
创建虚拟环境 python -m venv myenv
激活虚拟环境(Windows) myenv\Scripts\activate
激活虚拟环境(Linux/macOS) source myenv/bin/activate

祝你学习愉快,有问题欢迎随时提问!

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝