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

工程师Data
2025-06-25 11:14
阅读 228

开篇:FastAPI是什么?用来做什么?

开篇:FastAPI是什么?用来做什么?

在软件开发的世界里,后端(Backend) 是指负责处理数据、逻辑以及与数据库交互的部分。而 FastAPI 就是一个专门用来快速构建高效后端服务的 Python 工具。

🧠 类比一下:你可以把一个网站或应用看作是一家餐厅。前端是顾客看到的菜单和服务员,而后端就是厨房和厨师 —— 处理订单(请求)、准备食材(数据),然后返回结果。

FastAPI 的特点是:

  • 速度快:基于 Starlette 和 Pydantic,接近 Node.js 速度
  • 代码简洁:用 Python 写 API 非常直观
  • 自动文档生成:写好接口就自动生成漂亮的网页文档(Swagger UI)
  • 类型友好:支持 Python 类型提示,让你更容易写出安全、清晰的代码

🎯 适合人群:刚接触编程、想做 Web 开发的新手,或者对 Python 感兴趣的开发者。


环境准备:搭建你的第一个 FastAPI 开发环境

微服务架构示意图-1

环境准备:搭建你的第一个 FastAPI 开发环境

我们从最基础的安装开始,一步步带你配置开发环境。

✅ 步骤1:安装 Python

确保你已经安装了 Python,推荐使用 Python 3.8 及以上版本
打开命令行(Windows 是 CMD 或 PowerShell;Mac 和 Linux 是 Terminal),输入:

python --version

如果你看到类似 Python 3.9.6 的输出,说明已安装成功。

如果没有,前往 Python官网 下载并安装最新版。


✅ 步骤2:安装 FastAPI 和 Uvicorn

FastAPI 是一个框架,需要配合一个叫做 Uvicorn 的服务器来运行。

在命令行中依次运行以下两个命令来安装它们:

pip install fastapi
pip install uvicorn

✅ 安装完成之后,你可以新建一个 Python 文件,比如叫 main.py,开始我们的第一个 FastAPI 应用。


✅ 步骤3:写一个最简单的 FastAPI 示例

打开你常用的编辑器(如 VS Code、PyCharm 或记事本),编写如下代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, 我的第一个FastAPI程序!"}

保存为文件名 main.py

然后在命令行中运行:

uvicorn main:app --reload

解释:

  • uvicorn 是运行服务器的命令
  • main:app 表示在 main.py 中找到变量 app
  • --reload 让服务器在代码修改后自动重启(适合开发)

当你看到类似下面的输出时,表示服务启动成功:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

现在打开浏览器,访问这个网址:http://localhost:8000

你应该看到:

{"message": "Hello, 我的第一个FastAPI程序!"}

🎉 成功了!你现在正在运行一个 FastAPI 后端服务!


核心概念:FastAPI关键知识点详解

核心概念:FastAPI关键知识点详解

虽然刚才只写了寥寥几行代码,但其实已经包含了 FastAPI 最核心的几个概念。下面我们来一一讲解。


🔹 路由(Route):设置路径地址

每个 API 接口都需要一个“路径”,就像网页中的 URL 一样。我们通过装饰器 @app.get() 来设置路径。

例如:

@app.get("/users")
def get_users():
    return {"data": ["Alice", "Bob", "Charlie"]}

访问 http://localhost:8000/users 就可以看到返回的数据。


🔹 请求方法(HTTP 方法)

除了 GET,还有其他常见的请求方法:

方法 描述
GET 获取数据
POST 提交数据(如表单、登录)
PUT 更新数据
DELETE 删除数据

FastAPI 对这些方法都有对应的支持:

@app.post("/login")
def login():
    return {"status": "已登录"}

@app.put("/update-user")
def update_user():
    return {"status": "用户信息更新成功"}

🔹 参数处理:让接口更灵活

有些接口需要动态传值,比如查询某个用户的详细信息,可以通过路径参数查询参数来实现。

✦ 路径参数 Path Parameters

@app.get("/users/{user_id}")
def read_user(user_id: int):
    return {"user_id": user_id}

访问:http://localhost:8000/users/123

输出:

{"user_id": 123}

⚠️ 注意:这里的 user_id 是整数类型,如果传的是字符串会报错,这正是 FastAPI 的强大之处:类型校验自动完成

✦ 查询参数 Query Parameters

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

访问:http://localhost:8000/search?q=fastapi&limit=5

输出:

{"query": "fastapi", "limit": 5}

🔹 请求体 Body:接收 JSON 数据

当你需要用 POST 提交一些较复杂的数据时,就要使用请求体

FastAPI 使用 Pydantic 模块来做数据模型校验。

先定义一个数据模型类:

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None

然后编写接口:

@app.post("/items/")
def create_item(item: Item):
    return {"received": item.dict()}

调用时可以用 Postman、curl 或文档界面测试,发送 JSON 数据:

{
    "name": "笔记本电脑",
    "price": 8999.0,
    "is_offer": true
}

FastAPI 会自动解析并验证字段是否完整、是否符合类型要求。


🔹 自动生成文档:开箱即用的强大功能

还记得我们前面访问的那个链接吗?

打开:http://localhost:8000/docs

你会看到一个非常酷的交互式 API 文档页面,这就是 FastAPI 自动帮你生成的 Swagger 页面。你可以在这里直接测试每个接口!

💡 这个文档可以用于展示给团队成员、产品经理,甚至是前端开发者来对接。


实战项目:做一个“图书管理系统”小项目

为了帮助你更好地掌握 FastAPI,我们来动手做一个实战小项目 —— 图书管理系统的简单 API 接口。

🧭 项目目标:

创建以下几个 API:

  • 获取所有书籍
  • 添加一本书
  • 删除一本书

第一步:定义书籍数据模型

首先,我们定义一个书籍的数据结构。

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

app = FastAPI()

# 数据模型
class Book(BaseModel):
    title: str
    author: str
    year: int
    price: float

第二步:模拟数据库存储数据

我们暂时用内存来模拟数据库:

books = [
    {"title": "Python入门", "author": "李明", "year": 2021, "price": 45.9},
    {"title": "Web开发实战", "author": "王芳", "year": 2022, "price": 69.5},
]

第三步:添加获取书籍列表的接口

@app.get("/books/", response_model=List[Book])
def get_books():
    return books

📌 浏览器访问:http://localhost:8000/books/ 查看所有书籍列表。


第四步:添加一本书

@app.post("/books/add")
def add_book(book: Book):
    books.append(book.dict())
    return {"message": "书籍添加成功"}

📌 测试方式:

  1. 打开文档页面 http://localhost:8000/docs
  2. /books/add 接口中点击 Try it out
  3. 填写 JSON 数据,点击 Execute 发送请求

第五步:删除一本书(按标题)

@app.delete("/books/delete/{title}")
def delete_book(title: str):
    for book in books:
        if book["title"] == title:
            books.remove(book)
            return {"message": f"《{title}》删除成功"}
    return {"error": "未找到该书籍"}

数据流转过程-2

📌 浏览器访问:http://localhost:8000/books/delete/Web开发实战
应该能看到删除成功的信息。


到这里为止,我们已经实现了基本的 CRUD 功能(Create、Read、Update、Delete),你可以继续拓展功能,比如:

  • 支持分页查看书籍
  • 修改某本书的信息
  • 把数据存到真实数据库中(后面我们会讲)

常见问题解答


❓ Q1:我运行 FastAPI 出现 ModuleNotFoundError,怎么办?

常见错误:找不到模块如 fastapipydantic 等。

✅ 解决办法:

  1. 确认是否正确安装了对应包:
    pip install fastapi uvicorn pydantic
    
  2. 如果用了虚拟环境,确认当前终端激活了正确的虚拟环境。

❓ Q2:为什么我的 post 请求收不到数据?

可能原因:

  • 没有导入 BaseModel
  • 接口函数没有正确声明参数类型
  • 没有设置请求头为 JSON 格式

✅ 解决建议:

  • 确保使用 Pydantic 模型作为请求体
  • 用工具(如 Postman、curl)测试,检查请求内容是否格式正确

❓ Q3:FastAPI 支持数据库吗?

当然支持!虽然今天我们用了一个列表模拟数据库,但在实际项目中,你可以搭配 SQLite、MySQL、PostgreSQL 等多种数据库一起使用,后续学习可以深入这部分内容。


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

恭喜你完成了 FastAPI 入门!接下来你可以在以下几个方向继续探索:


✅ 基础进阶学习路线图:

  1. 学习更多 FastAPI 特性

    • 路由分组与标签
    • 异常处理机制
    • 用户权限控制(如 Token 认证)
  2. 连接数据库

    • 使用 SQLAlchemy、Tortoise ORM 或 asyncpg
    • 练习使用数据库进行 CURD 操作
  3. 部署上线

    • 学习如何将项目打包部署到服务器(如 Nginx + Gunicorn/Uvicorn)
    • 学习 Docker 部署 FastAPI 项目
  4. 结合前端项目

    • 用 FastAPI 提供 API 接口,搭配 Vue.js 或 React 构建前后端分离项目

💡 推荐学习资源:


总结

FastAPI 是一个非常适合初学者上手的现代后端框架。它不仅性能优异,而且拥有强大的自动文档和类型支持,使你可以专注于业务逻辑本身。

在这篇教程中,我们从零开始搭建了开发环境,理解了 FastAPI 的基本概念,并亲手实现了一个小型图书管理系统 API。希望你能继续坚持练习,逐步成长为一名合格的 Python 后端开发者!


📚 温馨提示:

初学不易,遇到困难请不要放弃。建议多敲代码、多查资料、多多实践,相信你一定能学会 FastAPI 并用它做出精彩的项目!

祝你 coding 快乐,成为一名出色的开发者!🚀

评论 0

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