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

线上稳定吗
2025-06-28 16:08
阅读 597

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

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

你可能听说过“网站背后的工作”这个说法。当你访问一个网页,比如淘宝、知乎或B站时,你的浏览器其实和服务器进行了数据交换——这就是“后端”的任务。而后端程序的职责就是接收请求、处理逻辑、返回数据。

FastAPI 是什么?

FastAPI 是一个使用 Python 编写的现代 Web 框架,专为构建 API(应用程序编程接口)而设计。它可以让你轻松地创建一个可以被其他程序或者前端网站调用的数据服务。

简单来说,它就像是你在网上点外卖的时候,负责把你选的菜品传给商家、计算总价、然后返回给你结果的那一套系统。

为什么选择 FastAPI?

  1. 写起来很快:代码简洁、语义清晰。
  2. 运行速度快:性能接近 Node.js 和 Go。
  3. 自带文档界面:能自动生成漂亮的在线接口文档(Swagger 和 ReDoc),适合调试和展示。
  4. 支持异步编程:未来感十足的技术特性,提升处理并发的能力。

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

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

在开始写代码之前,我们要先准备好开发环境。请跟着以下步骤一步步操作。

步骤一:安装 Python

确保你的电脑上已经安装了 Python。打开终端(Windows 上是命令提示符/PowerShell,Mac 或 Linux 用终端),输入:

python --version

如果你看到类似这样的输出:

Python 3.8.0

说明 Python 已安装。建议使用 Python 3.7 及以上版本。如果没有安装,请前往 Python官网 下载并安装。

步骤二:创建项目目录

在你的电脑中新建一个文件夹,例如叫 fastapi-tutorial,这就是我们将用来存放所有项目的根目录。

进入该目录:

cd fastapi-tutorial

步骤三:安装 FastAPI 和 Uvicorn(运行服务的工具)

执行以下命令来安装 FastAPI:

pip install fastapi uvicorn
  • FastAPI 是框架本身。
  • Uvicorn 是用于运行 FastAPI 应用的服务工具。

小贴士:如果你使用的不是全局环境,建议使用虚拟环境,命令是:

python -m venv venv
source venv/bin/activate  # Mac/Linux
venv\Scripts\activate     # Windows

完成上面三步,你的环境就准备好了!


核心概念:我需要理解哪些关键词?

核心概念:我需要理解哪些关键词?

刚开始学习 FastAPI,可能会遇到一些术语看起来很陌生。别担心,我们一起来看看这些词到底是什么意思。

1. API 是什么?

API(Application Programming Interface)中文翻译是“应用程序编程接口”,你可以把它理解为两个程序之间通信的桥梁。

举个例子:你手机上的天气 App 显示今天的天气信息,它是如何知道的呢?它其实是通过调用某个气象公司的 API 来获取数据的。

FastAPI 的主要用途就是帮你快速创建这种 API 接口。

2. 路由(Route)是什么?

在网站地址中,经常看到 https://example.com/userhttps://example.com/post 这样的路径。每个路径代表一种资源或功能。

FastAPI 中,我们使用 @app.get("/user") 这样的方式告诉程序:“当有人访问 /user 路径时,我应该调用下面这个函数来处理。”

我们称为这是“注册了一个 GET 请求的路由”。

3. 异步函数是什么?

FastAPI 支持异步编程(async/await),这意味着它可以同时处理多个请求,效率更高。

我们后面会学到,把普通的函数定义成“异步函数”的写法如下:

async def get_data():
    return {"data": "some async data"}

新手小贴士:不用急着理解所有细节,先从基本功能做起。

4. Pydantic 是什么?

FastAPI 使用 Pydantic 来做自动数据验证和解析。比如说,我们希望用户传来的数据必须包含用户名和邮箱,而且邮箱格式要正确。Pydantic 帮我们自动完成了这项工作。


实战项目:从零开始搭建一个简单的博客 API

现在让我们一起动手实践一个小项目,目的是帮助你熟悉基本的 CRUD(增删改查)操作,并体验 FastAPI 的强大与便捷。

📝目标:实现一个可以查看文章列表、添加文章、按 ID 查看文章的博客 API。

第一步:创建入口文件

fastapi-tutorial 文件夹下新建一个文件,命名为 main.py

在其中写入以下基础代码:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "欢迎来到我的博客 API!"}

这段代码做了两件事:

  1. 导入 FastAPI 并创建一个应用对象 app
  2. 定义了一个路径 / 的 GET 请求处理函数

第二步:运行服务器

回到终端,执行如下命令启动服务:

uvicorn main:app --reload

说明:

  • main 表示文件名(不带 .py
  • app 是我们创建的应用实例
  • --reload 表示热重载,修改代码后会自动重启服务(适用于开发阶段)

运行成功后,你会看到类似下面的输出:

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

这时,打开浏览器,访问:http://localhost:8000,你应该能看到:

{
  "message": "欢迎来到我的博客 API!"
}

第三步:添加文章列表接口

接下来我们来编写一个接口 /posts,用于返回文章列表。

首先,在 main.py 中新增一个模拟数据库(为了演示,暂时用内存中的列表代替真正的数据库):

posts = [
    {"id": 1, "title": "你好,世界", "content": "这是一个测试的文章内容"},
    {"id": 2, "title": "FastAPI 第一篇", "content": "FastAPI 非常强大且易于上手"}
]

再添加一个 GET 路由:

@app.get("/posts")
def get_posts():
    return posts

保存后刷新浏览器,访问 http://localhost:8000/posts 即可看到文章列表。

第四步:根据 ID 获取指定文章

我们需要添加一个带参数的路由 /posts/{post_id},用于根据文章 ID 返回特定文章。

@app.get("/posts/{post_id}")
def get_post(post_id: int):
    for post in posts:
        if post["id"] == post_id:
            return post
    return {"error": "没有找到这篇文章"}

试试访问 http://localhost:8000/posts/1,你应该可以看到对应的文章。

小技巧:FastAPI 自动将路径参数转换为整数类型,如果传入非法参数,还会报错,非常贴心。

第五步:添加一篇文章(POST 请求)

现在我们来写一个允许用户提交新文章的功能:

from fastapi import FastAPI
from pydantic import BaseModel

class PostCreate(BaseModel):
    title: str
    content: str

@app.post("/posts")
def create_post(post: PostCreate):
    new_id = len(posts) + 1
    new_post = {"id": new_id, "title": post.title, "content": post.content}
    posts.append(new_post)
    return new_post

说明:

  • 我们定义了一个 Pydantic 模型 PostCreate,表示用户提交的数据结构
  • 当 POST 请求发送到 /posts 时,FastAPI 会自动检查用户是否提供了合法的标题和内容字段
  • 添加文章后返回刚刚创建的文章对象

测试方法:打开 FastAPI 自动生成的文档界面 → 地址是 http://localhost:8000/docs → 找到 “create_post” → 点击 Try it out → 输入 JSON 示例如:

{
  "title": "我的第一篇文章",
  "content": "这是我自己用 FastAPI 发布的第一篇博文!"
}

然后点击 Execute。

第六步:查看文档界面(重要!)

访问 http://localhost:8000/docs,你会看到 FastAPI 自动生成的交互式 API 文档。

你可以直接在这个界面上测试各个接口,非常适合调试和教学。


常见问题解答

作为一个刚接触后端的新手,你很可能在学习过程中遇到这些问题:

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

特性 Flask FastAPI
数据验证 无内置支持 内置 Pydantic,自动验证
文档生成 需第三方库 自动生成 Swagger 和 ReDoc
异步支持 不够友好 原生支持异步
性能 较慢 更快,更现代化
适用场景 小型项目 大型项目、微服务

结论:对于初学者,推荐从 FastAPI 入门,因为它更适合现代开发。

❓Q2:路径匹配失败怎么办?

检查路径是否拼写错误,如 /post/posts 是否一致;注意大小写;确保有 @app.get() 装饰器绑定。

❓Q3:修改代码后为什么没生效?

可能是服务没有启用热加载(即没加 --reload 参数)。记得每次运行用这个命令:

uvicorn main:app --reload

❓Q4:接口返回 422 错误怎么办?

通常是因为请求体的数据不符合预期模型。比如少了个必填字段,或者类型不对。可以查看文档中的接口定义来确认需要的字段。


学习建议:下一步我可以学什么?

恭喜你完成了第一个 FastAPI 项目!你现在对后端有了初步了解。接下来你可以学习:

✅1. 接入真实数据库(如 SQLite、MySQL、PostgreSQL)

目前我们的“数据库”只是一个内存里的列表。实际项目中,你需要学习使用真实数据库存储数据。推荐学习:

  • SQL 查询基础
  • SQLAlchemy(Python ORM 工具)
  • PostgreSQL 或 MySQL 的连接与使用

✅2. 用户认证与权限管理

当你的 API 提供真实服务时,就需要考虑:

  • 用户登录系统
  • JWT(JSON Web Token)
  • 角色权限控制(如管理员/普通用户)

✅3. 异步编程进阶

FastAPI 原生支持异步,学会使用 async defawait 可以极大提高性能。

✅4. 部署上线知识

学完开发之后,你可以尝试:

  • 将项目部署到服务器(如 VPS 或云主机)
  • 使用 Nginx 反向代理
  • 用 Docker 容器化部署项目

结语:坚持学习,从新手走向高手

FastAPI 是一个非常适合入门后端开发的工具,它简单但强大。本教程只带你迈出了第一步,后续还有更多有趣又有挑战的内容等待你探索。

记住一句话:写代码最好的方式是不断写、不断改、不断试错。

祝你在这个旅程中一路顺畅!如果你喜欢这种风格的教学,欢迎继续关注更多实战教程哦 😊


字数统计:约2612字

评论 0

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