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

云上便利店
2025-06-27 05:09
阅读 564

🚀 开篇:FastAPI 是什么?它是做什么的?

🚀 开篇:FastAPI 是什么?它是做什么的?

大家好!欢迎来到《FastAPI入门》教程。无论你是编程小白,还是想从其他方向转到后端开发,这篇教程都会从零开始带你快速上手一个强大的 Python 后端框架——FastAPI

什么是 FastAPI?

简单来说,FastAPI 是一个用来创建 Web 接口(API)的 Python 框架。你可以把它理解成一套“工具包”,让你用 Python 编写程序,让别人可以通过网络访问你写的程序、获取数据或者执行操作。

比如:

  • 做一个天气查询接口
  • 制作一个用户登录验证系统
  • 创建一个可以被 App 调用的数据服务

FastAPI 的优点在于它 速度快、容易上手、自带文档界面,非常适合初学者和中小型项目使用。


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

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

在我们正式动手之前,先来配置一下开发环境。这一步非常重要,就像搭积木要先准备好桌子一样 😊

🔧 安装要求

  1. 安装 Python(3.8 以上版本)
  2. 安装 pip(Python 包管理器)
  3. 安装 FastAPI 和 Uvicorn(用于运行 API 服务器)

✅ 小提示:如果你不确定是否已经安装了 Python,可以在命令行输入 python --versionpython3 --version 查看版本号。


Step-by-step 安装指南

1. 安装 FastAPI 和 Uvicorn

打开命令行工具(Windows 可以用 cmd,Mac/Linux 用终端),输入以下命令:

pip install fastapi uvicorn

如果一切顺利,你应该看到类似下面的输出:

Successfully installed fastapi uvicorn

2. 验证安装是否成功

接下来我们测试一下环境是否搭建成功。

新建一个文件,例如叫做 main.py,输入如下代码:

from fastapi import FastAPI

app = FastAPI()

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

然后回到命令行,运行这个程序:

uvicorn main: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 关键知识点

学习新框架的时候总会遇到一些专业术语,别担心,我来用通俗的语言解释给你听👇


1. API 是什么?

API 是 Application Programming Interface 的缩写,翻译过来就是“应用程序接口”。

我们可以把它想象成“自动点餐机”。当你在点餐机上按下“汉堡 + 可乐”,它就会自动把订单送到后台厨房制作。这个过程就类似于调用了一个 API。

在 FastAPI 中,我们就是负责编写这些“点餐机”程序的人。


2. FastAPI 的核心元素

✅ FastAPI 类对象

这是创建整个项目的起点。通常我们会这样初始化它:

from fastapi import FastAPI

app = FastAPI()

这里的 app 就是一个 FastAPI 应用实例。


✅ 路由(@app.get("/xxx"))

路由就像是“导航图”,告诉程序当用户访问哪个网址时应该返回什么内容。

例如:

@app.get("/items/{item_id}")
def read_item(item_id: int):
    return {"item_id": item_id}

上面这段代码表示:

  • 当用户访问 /items/5 这样的 URL 时,将调用函数 read_item
  • 参数 item_id 是整数类型,并会被自动解析

✅ 请求方法(GET / POST / PUT / DELETE)

不同的请求方式代表不同操作:

方法 用途
GET 获取数据
POST 提交数据(如注册)
PUT 更新数据
DELETE 删除数据

示例:POST 请求

@app.post("/users")
def create_user(name: str, age: int):
    return {"name": name, "age": age}

3. 自动文档功能(Swagger UI)

FastAPI 强大的地方之一是:它会自动为你生成接口文档页面!

启动服务器之后,访问:

你可以直接在这里调试接口,非常方便哦!


4. 数据校验(Pydantic)

FastAPI 内置了数据校验机制,比如参数类型、必填项等都可以自动检查。

示例:

class UserCreate(BaseModel):
    username: str
    password: str
    email: Optional[str] = None

如果你传错了类型或漏了必填字段,FastAPI 会自动报错。


🛠️ 实战项目:做一个“学生信息管理系统”

🛠️ 实战项目:做一个“学生信息管理系统”

纸上得来终觉浅,我们一起来做个简单但完整的项目练练手吧!

我们将实现以下功能:

功能 接口路径
查询所有学生 GET /students
添加学生 POST /students
查询单个学生 GET /students/{id}

1. 准备工作

main.py 中引入所需模块:

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

2. 定义数据模型

创建一个用于保存学生信息的数据结构:

class Student(BaseModel):
    id: int
    name: str
    age: int
    grade: Optional[str] = None

✅ 这里使用的是 Pydantic 的 BaseModel,专门用来做数据校验。


3. 创建模拟数据库(内存中)

因为还没学数据库连接,我们先用一个 Python 列表当作临时数据库:

students_db = [
    Student(id=1, name="张三", age=20, grade="A"),
    Student(id=2, name="李四", age=21, grade="B")
]

4. 编写接口函数

获取所有学生

@app.get("/students", response_model=List[Student])
def get_students():
    return students_db

添加学生

@app.post("/students")
def add_student(student: Student):
    students_db.append(student)
    return {"message": "学生已添加"}

获取指定 ID 的学生

@app.get("/students/{student_id}", response_model=Student)
def get_student_by_id(student_id: int):
    for student in students_db:
        if student.id == student_id:
            return student
    return {"error": "未找到该学生"}

5. 测试接口

启动服务器:

uvicorn main:app --reload

打开 http://localhost:8000/docs

你可以点击每个接口的“Try it out”按钮进行测试。

比如:

  • 使用 POST 添加一个学生
  • 使用 GET 查看所有学生

是不是超级方便!🎉


❓常见问题解答:新手常问的问题都在这里

💬 Q1:FastAPI 和 Flask 有什么区别?

对比项 Flask FastAPI
学习曲线 更低 稍高(但不难)
性能 一般 快很多(异步支持)
文档功能 无内置 自带交互式文档
数据校验 不支持 支持(Pydantic)
是否适合新手 适合 同样适合

👉 所以说,FastAPI 在现代 Web 开发中是非常有优势的。


💬 Q2:为什么不能访问 localhost:8000?

可能是以下几个原因:

  1. 程序没有正确启动

    • 看命令行是否有异常报错
    • 是否误写了文件名或类名?
  2. 端口冲突或被占用

    • 可以尝试运行时改端口:uvicorn main:app --host 0.0.0.0 --port 8080
  3. 防火墙或浏览器限制

    • 换个浏览器试试,比如 Chrome、Edge

💬 Q3:POST 请求总是报错?

检查是否有以下问题:

  • 是否漏掉必填字段?
  • 输入的类型是否匹配?(比如输入了字符串,但期望是数字)
  • 请求头是否包含正确的 Content-Type: application/json

FastAPI 会自动返回详细的错误信息,根据提示修改即可!


📚 下一步学习建议:继续深入 FastAPI 的方向

恭喜你完成 FastAPI 的第一课!现在你已经可以独立写出一个小型 API 接口项目了。那么下一步该怎么走呢?我推荐你逐步掌握以下几个方向:


🔹 1. 连接真实数据库(如 SQLite、MySQL、PostgreSQL)

目前我们用的是模拟数据,下一步你可以学会如何连接真实的数据库,让数据永久存储。

常用技术:

  • SQLAlchemy
  • Alembic(数据库迁移)
  • Tortoise ORM(异步友好)

🔹 2. 用户认证 & Token 机制

了解 JWT(JSON Web Token)、OAuth2 等授权机制,让 API 更加安全。


🔹 3. 文件上传与下载处理

有时候你需要允许用户上传图片、PDF 等文件。FastAPI 也很好地支持这部分功能。


🔹 4. 测试与部署

  • 用 pytest 编写单元测试
  • 部署项目到服务器(如 Docker、Nginx、云平台等)

🔹 推荐学习资源


🌈 结语:坚持练习,你也可以成为后端高手!

FastAPI 是一个非常现代化且友好的 Python 框架。通过本篇教程,你应该已经掌握了:

  • 如何搭建 FastAPI 环境
  • 如何创建和测试 API 接口
  • 常见问题的解决方法
  • 下一步的学习方向

记住一句话:“写出来的东西才真正属于自己。” 多写代码,多动手,你一定能成为出色的后端开发者!

如果你喜欢这篇文章,记得分享给更多需要的朋友哟 🙌


🔚 本文约 2786 字,涵盖从环境搭建到实战项目的完整流程,希望对你的编程之路有所帮助!如有疑问,欢迎留言提问~

评论 0

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