跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

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

FastAPI 是 Python 异步 Web 框架,支持自动文档和类型检查。涵盖安装、启动、路径参数、查询参数及 Pydantic 数据模型的使用,帮助开发者快速构建高性能 API 接口。

数字游民发布于 2026/3/28更新于 2026/6/1118 浏览
Python FastAPI 入门实战:从环境搭建到数据模型

前言

在 Python Web 开发领域,FastAPI 凭借其高性能和易用性迅速成为热门选择。相比传统的 Django 或 Flask,它提供了更现代化的开发体验。本文将聚焦于最基础且实用的操作,带你从零开始跑通第一个 API 接口。

一、FastAPI 简介

Python Web 后端主要有三种主流框架:Django 功能全面但较重,Flask 轻量灵活但需自行组装插件,而 FastAPI 则像自动驾驶汽车一样高效且智能。

新手首选 FastAPI 的原因在于:

  • 自动生成文档:无需额外编写,接口文档随代码生成(Swagger UI)。
  • 减少 Bug:利用 Python 类型提示,参数错误会在启动或请求时直接报错。
  • 简洁:Hello World 仅需少量代码。

二、环境搭建

1. 安装

确保 Python 版本为 3.8 及以上。安装 FastAPI 模块:

pip install fastapi

接着安装 ASGI 服务器,生产环境推荐使用 Uvicorn:

pip install uvicorn[standard]

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 对象。启动服务有两种方式:

  1. 在代码中直接运行 uvicorn.run。
  2. 在终端输入命令:
uvicorn main:app

启动后访问 http://127.0.0.1:8000,你将看到返回的 JSON 数据。

三、自动文档

这是 FastAPI 的一大亮点。无需编写任何文档代码,访问 http://127.0.0.1:8000/docs 即可看到 Swagger UI 界面。你可以直接在网页上点击 Try it out,填写参数并执行测试,极大简化了调试流程。

四、接收数据

后端主要工作是接收前端数据、处理并返回结果。FastAPI 主要通过两种方式接收数据。

1. 路径参数

场景:查询 ID 为 5 的学生信息,URL 通常为 /student/5。

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

注意函数参数中的 student_id: int。如果你访问 /student/abc,FastAPI 会直接报错,提示需要整数而非字符串。这就是类型检查的威力。

2. 查询参数

场景:类似搜索,URL 为 /search?keyword=python&page=1。

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

未出现在路径中的变量默认为查询参数。page=1 表示默认值为 1。

五、Pydantic 数据模型

处理复杂数据(如注册信息)时,逐个写参数会很乱。FastAPI 引入 Pydantic 来定义数据的'形状'。

from pydantic import BaseModel

class UserInfo(BaseModel):
    username: str
    password: str
    age: int = 18
    is_student: bool = True

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

在 /docs 页面找到 /register 接口,点击 Try it out 修改 Request body 中的 JSON 数据即可测试。FastAPI 会自动解析 JSON 并校验数据。

六、总结

掌握以上内容,你已经迈出了 FastAPI 开发的第一步:

  1. 安装:pip install fastapi。
  2. 启动:使用 uvicorn 作为引擎。
  3. 文档:/docs 自动生成,方便测试。
  4. 参数:利用类型提示约束路径和查询参数。
  5. 模型:用 BaseModel 处理 POST 数据。

FastAPI 不仅提升编码效率,更能帮助你写出规范、健壮的代码。

目录

  1. 前言
  2. 一、FastAPI 简介
  3. 二、环境搭建
  4. 1. 安装
  5. 2. 运行与启动
  6. 三、自动文档
  7. 四、接收数据
  8. 1. 路径参数
  9. 2. 查询参数
  10. 五、Pydantic 数据模型
  11. 六、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Pandas 数据合并与拼接:merge、join 与 concat 详解
  • LeetCode 替换所有问号与提莫攻击解题思路
  • MySQL 表约束详解:非空、主键与外键的作用
  • Web 团队开发 App,是否应该选择 Capacitor?
  • Flutter 使用 web_scraper 在 HarmonyOS 上实现网页抓取与数据解析
  • Spring Boot Web 三大核心交互实战:表单、AJAX 与 JSON
  • C++26 Contracts 契约机制详解与代码合法性验证
  • GitHub Copilot 高效编程实战指南:从配置到高级技巧
  • Spring Boot 事件机制详解:原理与示例
  • OpenClaw 部署飞书机器人实战指南
  • Windows 下 MATLAB 与 C/C++ 混合编程:DLL 生成与调用
  • LangBot:企业级即时通讯 AI 机器人平台介绍
  • RabbitMQ 分布式系统实战:从安装部署到 C++ 客户端调用
  • Flutter 在 OpenHarmony 集成 MediaPipe 核心库:手势与视觉识别实战
  • Seedance 2.0 重构 AIGC 视频工作流:语义映射与热更新实战
  • 前端多版本发布零 404 部署方案详解
  • 马斯克xAI开源Grok-1:3140亿参数模型架构详解
  • Python 入门指南:环境搭建与 Hello World 示例
  • Dreamify 免费 AI 绘画工具的功能与实现
  • 阿里开源 Z-Image-ComfyUI:中文提示词效果实测

相关免费在线工具

  • 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