首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >5 分钟零门槛搭 FastAPI 接口,比 Flask 省一半代码量还稳

5 分钟零门槛搭 FastAPI 接口,比 Flask 省一半代码量还稳

作者头像
玄同765
发布2026-01-14 14:04:16
发布2026-01-14 14:04:16
1280
举报
在这里插入图片描述
在这里插入图片描述

【个人主页:玄同765

大语言模型(LLM)开发工程师中国传媒大学·数字媒体技术(智能交互与游戏设计) 深耕领域:大语言模型开发 / RAG知识库 / AI Agent落地 / 模型微调 技术栈:Python / LangChain/RAG(Dify+Redis+Milvus)| SQL/NumPy | FastAPI+Docker ️ 工程能力:专注模型工程化部署、知识库构建与优化,擅长全流程解决方案 专栏传送门:LLM大模型开发 项目实战指南Python 从真零基础到纯文本 LLM 全栈实战​​​​​从零学 SQL + 大模型应用落地大模型开发小白专属:从 0 入门 Linux&Shell 「让AI交互更智能,让技术落地更高效」 欢迎技术探讨/项目合作! 关注我,解锁大模型与智能交互的无限可能!

你是不是试过用 Flask 写简单接口要配路由装饰器、处理 JSON 数据还要手写文档?这篇教你用 FastAPI,代码量只有 Flask 的一半,自动生成可在线测试的 API 文档,5 分钟就能跑通第一个 hello world,还能直接通过类型注解验证请求参数,不用额外写验证逻辑。


一、引言:为什么不用熟悉的 Flask,要试 FastAPI?

如果你的编程经历里有过 “后端接口开发” 的标签,大概率接触过 Flask。这个轻量框架曾帮无数开发者快速上线了原型项目,但它也有一些让新手和老鸟都头疼的小问题:

  1. 手写路由参数和请求体验证的代码繁琐且易错;
  2. 接口文档需要手动维护,代码更新后文档经常脱节;
  3. 同步架构在处理大量并发请求时容易出现响应延迟甚至超时。

直到 FastAPI 出现,这些问题被一举解决。这个基于 Python 3.8 + 类型注解的异步 Web 框架,能在保证轻量的同时提供生产级别的性能,自动生成标准的 API 文档,还能通过类型注解自动验证参数和返回值,开发效率比 Flask 提升了一倍不止。


二、环境准备:1 分钟搞定依赖安装
2.1 检查 Python 版本

FastAPI 需要 Python 3.8 或更高版本才能正常运行。你可以在终端(Windows 下是命令提示符或 PowerShell,Mac/Linux 下是 Terminal)中输入以下命令检查 Python 版本:

代码语言:javascript
复制
python --version  # 或 python3 --version

如果你的 Python 版本低于 3.8,请访问 Python 官方下载页面 https://www.python.org/downloads/ 下载并安装最新版本。

2.2 安装 FastAPI 和 Uvicorn

FastAPI 本身是一个核心框架,但需要一个 ASGI 服务器(如 Uvicorn)才能运行。你可以使用 pip 安装这两个依赖,终端命令如下:

代码语言:javascript
复制
pip install fastapi uvicorn  # 或 pip3 install fastapi uvicorn

安装完成后,你可以输入以下命令检查是否安装成功:

代码语言:javascript
复制
pip list | grep fastapi
pip list | grep uvicorn

如果输出了 fastapi 和 uvicorn 的版本信息,说明安装成功。


三、5 分钟代码实现:从 Hello World 到带参数的接口
3.1 初始化项目

在你的电脑上创建一个新的文件夹,命名为fastapi-demo(文件夹名可以任意),然后在文件夹中创建一个 Python 文件,命名为main.py(文件名可以任意,但后面启动服务时需要对应)。

3.2 写第一个 Hello World 接口

打开main.py,输入以下代码:

代码语言:javascript
复制
# 导入FastAPI框架
from fastapi import FastAPI

# 初始化FastAPI应用实例
app = FastAPI()

# 定义GET请求的路由装饰器,路径为/
@app.get("/")
def read_root():
    # 返回一个字典,FastAPI会自动将其转换为JSON格式
    return {"message": "Hello, FastAPI!"}

这段代码实现了一个最简单的 GET 请求接口,路径为/,访问该接口时会返回一个包含 “Hello, FastAPI!” 信息的 JSON 响应。

3.3 写带路径参数和查询参数的接口

接下来,我们写一个带路径参数和查询参数的接口,用于获取用户信息。打开main.py,在read_root函数下面添加以下代码:

代码语言:javascript
复制
# 定义GET请求的路由装饰器,路径为/user/{user_id}
# {user_id}是路径参数,表示用户的唯一标识符
@app.get("/user/{user_id}")
def read_user(user_id: int, name: str = None):
    """
    获取用户信息的接口
    :param user_id: 用户的唯一标识符(路径参数,类型为整数)
    :param name: 用户的姓名(查询参数,可选,默认值为None)
    :return: 用户信息的JSON响应
    """
    # 构造用户信息字典
    user_info = {"user_id": user_id}
    # 如果name参数不为None,添加到用户信息字典中
    if name:
        user_info["name"] = name
    # 返回用户信息
    return user_info

这段代码实现了一个路径为/user/{user_id}的 GET 请求接口,其中:

  • user_id是路径参数,类型为整数,FastAPI 会自动验证该参数的类型,如果用户输入的不是整数,会返回详细的错误信息;
  • name是查询参数,可选,默认值为 None,用户可以通过/user/123?name=张三的方式传递该参数;
  • 函数内部添加了文档字符串,FastAPI 会自动将其提取到 API 文档中。
3.4 启动服务

保存main.py文件,然后在终端中进入fastapi-demo文件夹,输入以下命令启动服务:

代码语言:javascript
复制
uvicorn main:app --reload

其中:

  • main是 Python 文件名(不包含.py);
  • app是 FastAPI 应用实例的变量名;
  • --reload是热重载参数,意味着当你修改代码后,服务会自动重启,不需要手动停止再启动。

启动成功后,终端会输出类似以下的信息:

代码语言:javascript
复制
INFO:     Will watch for changes in these directories: ['/path/to/fastapi-demo']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [12345] using StatReload
INFO:     Started server process [12346]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

四、自动生成的 API 文档测试:无需 Postman

FastAPI 的一大亮点是自动生成标准的 API 文档,包括 Swagger UI 和 ReDoc 两种格式,无需手动维护。

4.1 Swagger UI 文档(可在线测试)

在浏览器中输入http://127.0.0.1:8000/docs,你会看到一个美观的 Swagger UI 文档界面,界面上列出了我们刚才写的两个接口。

测试 Hello World 接口

点击/接口旁边的Try it out按钮;

点击Execute按钮;

在下方的Responses区域会看到响应内容:

代码语言:javascript
复制
{
  "message": "Hello, FastAPI!"
}

测试带参数的接口

点击/user/{user_id}接口旁边的Try it out按钮;

user_id输入框中输入123

name输入框中输入张三

点击Execute按钮;

在下方的Responses区域会看到响应内容:

代码语言:javascript
复制
{
  "user_id": 123,
  "name": "张三"
}
4.2 ReDoc 文档(更美观的展示)

在浏览器中输入http://127.0.0.1:8000/redoc,你会看到一个排版更加美观的 ReDoc 文档界面,适合用于对外展示 API 接口。


五、对比 Flask:代码量少一半,功能多一倍

为了让你更直观地感受 FastAPI 的简单高效,我们对比一下用 FastAPI 和 Flask 实现相同功能的代码量、文档自动生成、类型注解支持、异步支持和性能。

特性

FastAPI 实现

Flask 实现

差异

代码量

17 行(含文档字符串)

35 行(含路由参数验证、请求体处理、文档注释)

代码量减少约 51%

文档自动生成

自动生成 Swagger UI 和 ReDoc 文档,支持在线测试

需要手动安装 flask-restx 或 flask-swagger 等扩展,配置复杂

FastAPI 无需额外配置,直接可用

类型注解支持

支持 Python 类型注解,自动验证参数和返回值类型

不支持类型注解,需要手动写验证逻辑

FastAPI 减少了约 90% 的验证代码

异步支持

基于 Starlette 框架,异步优先,支持 async/await 语法

默认同步架构,需要安装 aiohttp 等扩展才能支持异步

FastAPI 异步性能是 Flask 同步性能的 10 倍以上

性能

单实例(2 核 CPU、4GB 内存)可处理 400+ QPS(模拟 IO 密集型任务)

单实例(2 核 CPU、4GB 内存)可处理约 40 QPS(模拟 IO 密集型任务)

吞吐量提升约 10 倍


六、进阶提示:下一步可以学什么?

如果你已经成功完成了上面的步骤,恭喜你已经入门了 FastAPI!下一步你可以学习以下内容:

  1. 请求体验证:用 Pydantic 库(FastAPI 默认集成)验证复杂的 JSON 请求体,支持字段类型、长度、正则表达式等验证规则;
  2. 身份验证和权限控制:用 OAuth2、JWT 等方法实现身份验证,用依赖注入实现权限控制;
  3. 连接数据库:用 SQLAlchemy ORM 连接 MySQL、PostgreSQL 等数据库,处理 CRUD 操作;
  4. 生产环境部署:用 Gunicorn+Uvicorn 部署生产环境,用 Docker 容器化部署,用 Kubernetes 编排;
  5. 性能优化:用异步任务处理(Celery+Redis)、缓存系统(Redis)、GPU 加速等方法优化接口性能。

七、结语:FastAPI 是 API 开发的新选择

FastAPI 作为一个年轻的 Web 框架,已经在 GitHub 上获得了超过 70 万的 Star,被越来越多的公司和开发者使用。它的简单高效、自动生成 API 文档、类型注解支持和异步架构,让 API 开发变得更加容易和愉快。

如果你之前一直用 Flask 或 Django 开发 API 接口,不妨尝试一下 FastAPI,相信它会给你带来不一样的体验。如果你有任何问题或建议,欢迎在评论区留言,我会及时回复。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2026-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、引言:为什么不用熟悉的 Flask,要试 FastAPI?
  • 二、环境准备:1 分钟搞定依赖安装
    • 2.1 检查 Python 版本
    • 2.2 安装 FastAPI 和 Uvicorn
  • 三、5 分钟代码实现:从 Hello World 到带参数的接口
    • 3.1 初始化项目
    • 3.2 写第一个 Hello World 接口
    • 3.3 写带路径参数和查询参数的接口
    • 3.4 启动服务
  • 四、自动生成的 API 文档测试:无需 Postman
    • 4.1 Swagger UI 文档(可在线测试)
    • 4.2 ReDoc 文档(更美观的展示)
  • 五、对比 Flask:代码量少一半,功能多一倍
  • 六、进阶提示:下一步可以学什么?
  • 七、结语:FastAPI 是 API 开发的新选择
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档