跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Python

Python FastAPI 入门:从环境搭建到数据模型实战

FastAPI 是新一代 Python Web 框架,以高性能和自动文档著称。涵盖环境配置、基础路由定义、路径与查询参数处理,以及利用 Pydantic 进行数据校验的完整流程。通过实战示例展示如何快速构建健壮的 API 接口,适合希望高效开发后端服务的开发者参考。

奇形怪状发布于 2026/3/21更新于 2026/4/264 浏览
Python FastAPI 入门:从环境搭建到数据模型实战

前言

在 Python Web 开发领域,FastAPI 凭借其高性能和易用性脱颖而出。相比传统框架,它不仅能自动生成接口文档,还能利用类型提示减少运行时错误。本文将聚焦于最基础且实用的操作,带你从零开始构建第一个 API 接口。

一、FastAPI 简介

Python Web 开发主要有三种主流选择:

  • Django:功能全面但相对笨重,适合大型项目。
  • Flask:轻量灵活,但需要自行组装插件。
  • FastAPI:新晋热门,速度快、支持异步、自动生成交互式文档。

新手推荐 FastAPI 的原因在于:无需编写额外文档代码,接口文档自动生成;利用类型提示实现参数校验,降低 Bug 率;Hello World 示例仅需寥寥数行。

二、环境搭建

1. 安装依赖

确保 Python 版本为 3.8 及以上。安装 FastAPI 核心库及 ASGI 服务器(生产环境推荐使用 Uvicorn):

pip install fastapi uvicorn

若网络受限,可指定国内镜像源加速下载。

2. 启动服务

新建 main.py 文件,编写基础应用代码:

from fastapi import FastAPI
import uvicorn

# 创建应用实例
app = FastAPI()

# 定义路由
@app.get("/")
def root():
    return {"message": "Hello World"}

# 启动入口
if __name__ == "__main__":
    uvicorn.run(app="main:app", host="127.0.0.1", port=8000)

这里的 main:app 表示运行 main.py 文件中的 app 对象。启动后访问 http://127.0.0.1:8000,将看到返回的 JSON 数据。

三、自动文档功能

这是 FastAPI 的核心优势之一。无需手动编写文档,服务启动后访问 /docs 即可看到 Swagger UI 界面。

在该界面中,你可以直接点击 Try it out 按钮测试接口,填写参数并执行请求,极大简化了调试流程。

四、接收数据的方式

后端开发的核心流程是接收前端数据、处理并返回结果。FastAPI 主要支持两种参数传递方式。

1. 路径参数 (Path Parameters)

适用于 URL 中包含特定标识符的场景,例如查询 ID 为 5 的学生信息,URL 结构通常为 /student/5。

from fastapi import FastAPI
import uvicorn

app = FastAPI()

@app.get("/student/{student_id}")
def get_student(student_id: int):
    return {
        "学生 ID": student_id,
        "类型": str(type(student_id))
    }

if __name__ == "__main__":
    uvicorn.run(app="main:app", host="127.0.0.1", port=8088)

注意函数参数中的类型注解 student_id: int。FastAPI 会自动将路径中的值转换为整数。如果传入非数字字符,框架会直接报错提示类型不匹配,这体现了类型检查的强大之处。

2. 查询参数 (Query Parameters)

适用于类似搜索功能的场景,URL 结构如 /search?keyword=python&page=1。未在路径中定义的变量默认为查询参数。

from fastapi import FastAPI
import uvicorn

app = FastAPI()

@app.get("/search")
def search_data(keyword: str, page: int = 1):
    return {
        "你搜的词": keyword,
        "当前页码": page
    }

if __name__ == "__main__":
    uvicorn.run(app="main:app", host="127.0.0.1", port=8088)

访问 /search?keyword=apple 时,page 将使用默认值 1;若添加 &page=5,则返回对应页码。

五、Pydantic 数据模型

当接口需要接收复杂数据(如注册表单的用户名、密码、年龄等)时,逐个定义函数参数会变得杂乱。FastAPI 引入了 Pydantic 库来定义数据的'形状'和校验规则。

from fastapi import FastAPI
import uvicorn
from pydantic import BaseModel

# 定义数据模型
class UserInfo(BaseModel):
    username: str
    password: str
    age: int = 18
    is_student: bool = True

app = FastAPI()

@app.post("/register")
def register(user: UserInfo):
    if user.age < 18:
        return {"message": "未成年人禁止注册", "code": 400}
    return {
        "message": "注册成功",
        "用户": user.username,
        "身份": "学生" if user.is_student else "社会人"
    }

if __name__ == "__main__":
    uvicorn.run(app="main:app", host="127.0.0.1", port=8088)

在接口定义中,将参数类型指定为 UserInfo,FastAPI 会自动解析前端传来的 JSON 数据并填充到 user 对象中。你可以通过 /docs 页面测试 POST 请求,直接在 Request body 中修改 JSON 数据并执行,无需手动编写解析逻辑。

六、总结

掌握上述内容,你已经具备了 FastAPI 的基础开发能力。回顾要点:

  1. 安装:使用 pip 安装 fastapi 和 uvicorn。
  2. 启动:通过 uvicorn 运行 ASGI 应用。
  3. 文档:利用 /docs 自动生成接口文档进行测试。
  4. 参数:利用类型提示约束路径和查询参数。
  5. 模型:使用 BaseModel 处理复杂的 POST 数据校验。

FastAPI 不仅提升了编码效率,更通过严格的类型系统帮助开发者写出健壮的代码。后续可结合数据库进一步扩展实际业务场景。

目录

  1. 前言
  2. 一、FastAPI 简介
  3. 二、环境搭建
  4. 1. 安装依赖
  5. 2. 启动服务
  6. 创建应用实例
  7. 定义路由
  8. 启动入口
  9. 三、自动文档功能
  10. 四、接收数据的方式
  11. 1. 路径参数 (Path Parameters)
  12. 2. 查询参数 (Query Parameters)
  13. 五、Pydantic 数据模型
  14. 定义数据模型
  15. 六、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Linux 网络编程实战:基于 C++ 实现 JSON 与 HTTP Web 服务器
  • 前端 EME DRM 反录屏原理与实战代码
  • 基于树莓派4B与Motion搭建轻量级本地安防监控系统
  • Spring Boot 项目部署实战:四种主流方案详解
  • FIS3 构建工具安装与发布指南
  • FPGA 实现任意角度图像旋转:原理与流水线设计
  • Qwen3-0.6B 实战:构建原生支持思考链的对话机器人
  • SQL Server 2019 安装与配置实战指南
  • Git 远程仓库连接实战:HTTPS 与 SSH 配置详解
  • RabbitMQ Spring Boot 集成:Hello World 实战
  • SecureCRT 9.1.0 安装与配置教程
  • 二分算法实战:查找元素首尾位置与区间计数
  • AR 眼镜核心技术详解:硬件架构、算法与应用场景
  • HTML5 Web Workers 详解:提升网页性能与响应速度的关键
  • JavaSE 核心考点复盘:对象创建、String 机制与 IO 流详解
  • Python 安装与环境配置实战指南
  • DeepSeek 深度使用指南:提示词技巧与本地知识库搭建
  • 车载网关 GW 连接外部 IP Tester 技术解析
  • HTML Popover API:原生属性实现浮层交互,告别 JS 组件库依赖
  • Ubuntu 22.04 生产环境 FastAPI + Uvicorn + Nginx 部署实战

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online