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

雪崩预防员
2025-06-18 14:04
阅读 269

一、开篇:FastAPI 是什么?我们为什么要学它?

一、开篇:FastAPI 是什么?我们为什么要学它?

你可能听说过“网站后端”这个术语,也可能在找工作时见过“后端工程师”这个职位。那么,什么是后端呢?简单来说,后端就是处理网站功能逻辑的那一部分程序

比如说,当你登录一个网站的时候,输入用户名和密码点击“登录”按钮,这时候浏览器(前端)会把你的信息发给服务器(后端),后端会对这些信息进行验证并返回结果:“登录成功”或“用户名或密码错误”。

FastAPI 就是一个帮助我们快速搭建后端服务的 Python 框架。它不仅速度快、易于上手,还自带了非常实用的功能,比如接口文档自动生成!对于刚入门的新手来说,它是一个非常合适的起点。

如果你是零基础的小白,别担心,这篇文章将从头开始带你一步步掌握 FastAPI 的基本用法。


二、环境准备:搭建我们的开发环境

二、环境准备:搭建我们的开发环境

1. 安装 Python

首先确保你的电脑已经安装了 Python 3.8 及以上版本(推荐使用 Python 3.9 或更新版本)。你可以通过以下命令检查是否已安装 Python:

python --version

如果没有安装,可以前往 Python 官网下载安装包。

📌 提示:Windows 用户建议勾选 “Add to PATH” 选项来方便后续操作。


2. 创建项目目录

我们可以先为我们的项目创建一个新的文件夹,比如:

mkdir fastapi_demo
cd fastapi_demo

3. 安装 FastAPI 和 Uvicorn

我们使用 pip 来安装 FastAPI 和运行服务器所需的工具:

pip install fastapi uvicorn
  • fastapi 是框架本身。
  • uvicorn 是用来运行 FastAPI 项目的 ASGI 服务器。

安装完成后,我们就可以开始写第一个 FastAPI 程序啦!


三、核心概念:理解 FastAPI 的关键点

三、核心概念:理解 FastAPI 的关键点

为了让你更好地理解和使用 FastAPI,我们先解释几个非常重要的概念。不需要死记硬背,理解它们的作用就可以了。


1. API 是什么?

API(Application Programming Interface) 是一种让两个程序之间通信的规则。你可以把它想象成一个“窗口”,别人可以通过这个窗口向你的程序发送请求,然后得到结果。

举个例子:假设你有一个天气预报程序,别人可以通过调用你的 API 获取某个城市的天气。


2. 路由(Route)

在 FastAPI 中,路由就像是地图上的路线指引。每个 URL 地址都对应着一段代码,当用户访问这个地址时,就会执行相应的代码。

例如:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "你好,欢迎来到首页"}

这段代码中:

  • @app.get("/") 表示这是一个 GET 请求,并且路径是根路径 /
  • read_root() 函数负责处理这个请求
  • 返回的内容会被自动转换为 JSON 格式

你可以保存上面代码为 main.py,然后在终端运行:

uvicorn main:app --reload
  • main 表示文件名(不加 .py
  • --reload 表示自动刷新服务器(适合开发阶段)

打开浏览器,访问:http://127.0.0.1:8000 就能看到输出内容啦!


3. 参数传递

我们来看两种常见方式:

(1)查询参数 Query Parameters

URL 中可以附加参数信息。例如:

http://example.com/items?name=book&id=1

在 FastAPI 中这样接收:

@app.get("/items")
def read_item(name: str, id: int):
    return {"name": name, "id": id}

你可以访问 http://127.0.0.1:8000/items?name=abc&id=123 来测试这个接口。


(2)路径参数 Path Parameters

有时我们会直接把参数放在路径里,比如:

http://example.com/users/123

表示 ID 为 123 的用户信息。

FastAPI 写法如下:

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

注意 {} 这对花括号,它告诉 FastAPI 这是一个变量参数。


4. 请求方法类型

常见的 HTTP 请求方法有:

方法 含义
GET 获取数据
POST 提交数据
PUT 更新数据
DELETE 删除数据

在 FastAPI 中你可以像这样定义不同方法:

@app.post("/create")
def create_data():
    return {"status": "created"}

@app.put("/update")
def update_data():
    return {"status": "updated"}

@app.delete("/delete")
def delete_data():
    return {"status": "deleted"}

✅ 小结:本节知识点列表

  • API 是程序之间的“对话方式”
  • GET, POST, PUT, DELETE 是常用的请求方法
  • 使用 @app.get("/path") 定义路由
  • 参数分为查询参数(query)和路径参数(path)

四、实战项目:做一个简单的图书管理系统

四、实战项目:做一个简单的图书管理系统

我们接下来通过一个小项目——“图书管理系统”来巩固前面所学的知识。


1. 项目目标

我们将实现以下功能:

功能 接口
查看所有图书 GET /books
新增一本图书 POST /books
查询指定图书 GET /books/{id}

2. 项目结构

先创建一个名为 books.py 的文件,在里面写下如下代码:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

# 用于模拟数据库的列表
books_db = []

# 定义图书的数据模型
class Book(BaseModel):
    id: int
    title: str
    author: str

# 获取所有图书
@app.get("/books")
def get_books():
    return books_db

# 添加新图书
@app.post("/books")
def add_book(book: Book):
    books_db.append(book)
    return {"message": "书籍添加成功", "book": book}

# 获取某本书的信息
@app.get("/books/{book_id}")
def get_book(book_id: int):
    for book in books_db:
        if book.id == book_id:
            return book
    return {"error": "未找到这本书"}

3. 安装 Pydantic

我们在上面用了 BaseModel,它来自 pydantic 库:

pip install pydantic

💡 Pydantic 可以帮我们自动校验和解析数据格式。


4. 启动服务

运行下面这条命令启动服务器:

uvicorn books:app --reload

浏览器访问:http://127.0.0.1:8000/docs 即可看到自动生成的接口文档界面!


5. 测试接口

进入 Swagger UI 页面(即 /docs 页面),你可以直接测试各个接口:

  • 点击 /POST /books -> Try it out -> 输入以下 JSON 数据:
{
  "id": 1,
  "title": "Python 编程入门",
  "author": "张老师"
}

点击 Execute 执行提交。

然后访问 /GET /books 查看所有图书,你应该可以看到刚刚新增的书籍。

再试试访问 /GET /books/1 查看具体的一本书。


✅ 小结:本节知识点列表

  • 使用 BaseModel 定义请求体格式
  • 使用列表模拟数据库存储
  • 实现图书的增查接口
  • 使用 /docs 自带的文档调试接口

五、常见问题解答:新手容易遇到的问题汇总

负载均衡配置-1

Q1:报错“No module named 'fastapi'”怎么办?

✅ 解答:说明你还没有正确安装 FastAPI,请运行:

pip install fastapi uvicorn

也可以尝试加上 --user 参数避免权限问题:

pip install --user fastapi uvicorn

Q2:页面打不开或者提示连接失败?

✅ 解答:可能是服务没有启动或者被其他程序占用了端口。

  • 确保你在终端执行的是:uvicorn 文件名:app --reload
  • 如果出现“Address already in use”错误,可以改端口号:
uvicorn main:app --host 127.0.0.1 --port 8080

然后访问:http://localhost:8080


Q3:如何退出运行中的 FastAPI 服务?

✅ 解答:在终端按快捷键 Ctrl + C 即可终止当前运行的服务。


Q4:为什么我写的函数不生效?

✅ 解答:检查是否漏掉装饰器(如 @app.get("/xxx")),这是 FastAPI 匹配请求的关键。


六、学习建议:下一步可以怎么学?

恭喜你完成了 FastAPI 的第一次实战!

接下来你可以继续深入以下几个方向:


🔹 建议 1:了解真实数据库操作

目前我们只是用了一个列表来模拟数据库,接下来可以学习如何连接真正的数据库,比如:

  • SQLite
  • MySQL
  • PostgreSQL

推荐库:

  • SQLAlchemy(Python ORM)
  • Tortoise ORM(更适合异步)

🔹 建议 2:学习 JWT 身份认证

实际项目中常需要用到“登录”的功能,可以进一步学习:

  • JWT(Json Web Token)身份验证机制
  • 使用中间件保护接口安全

🔹 建议 3:整合前后端

你可以尝试把 FastAPI 做的后端和 Vue.js、React 等前端框架结合起来,完成一个完整的 Web 应用!


🔹 推荐学习顺序清单

  1. ✅ 已掌握:FastAPI 基础知识 + 接口编写
  2. 学习连接真实数据库(如 SQL)
  3. 接口权限管理(JWT 认证)
  4. 异步支持与性能优化
  5. 部署上线(比如用 Nginx + Gunicorn)

七、结语:坚持就是胜利!

作为初学者,可能会觉得后端开发门槛高,但只要你愿意动手实践,就能一点点进步。

记住一句话:代码不是写出来的,是跑出来的。

每敲一行代码、每解决一个 bug,你就在离大牛更近一步!

祝你在编程的世界里越走越远!


📌 完整示例源码获取方式
你可以将本文中的代码复制粘贴到自己的编辑器中练习,也可以在 GitHub 上搜索类似项目练习。

有问题欢迎留言或加入交流群组,一起成长!


文章字数统计:约 2825 字
风格:通俗易懂 + 丰富实践 + 结构清晰
适合人群:完全零基础小白

评论 0

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