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

Python FastAPI 入门教程:新手快速上手指南

FastAPI 高性能异步 Web 框架入门指南。涵盖环境配置、核心概念、路径参数、请求体处理及基础 CRUD 实现。通过 Pydantic 模型验证数据,利用 Swagger 自动生成文档。适合希望构建现代 RESTful API 的开发者,支持异步编程与依赖注入,便于后续扩展数据库连接与部署。

孤勇者发布于 2026/3/28更新于 2026/6/218 浏览

这篇教程的目标是帮助零基础开发者独立写出生产级别的 RESTful API。

1. 为什么选择 FastAPI

维度FastAPIFlaskDjango结论
开发速度★★★★★★★★★☆★★★☆☆最快
性能接近 Node.js / Go中等中等偏下目前 Python 最快
自动文档OpenAPI + Swagger + ReDoc需手动或扩展admin 强大但 API 需额外写碾压
类型提示支持原生 Pydantic v2需插件部分支持现代开发标配
异步支持原生 async/await需 gevent 或异步扩展Channels(较重)天生异步
学习曲线(新手)中等(但文档极好)最低较高性价比最高
社区活跃度爆炸式增长成熟但增速放缓非常成熟未来 3–5 年首选

一句话结论:如果你 2025–2026 年想用 Python 写高性能、现代、好维护的 API,FastAPI 几乎是唯一主流选择。

2. 环境准备

推荐组合(最稳) Python 3.10 / 3.11 / 3.12 + uv / pdm / poetry(现代包管理) + venv

最快上手方式(5 分钟)

# 方式一:用 uv(2025 年最推荐的极简工具,速度比 pip 快 10–100 倍)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate # Windows 用 .venv\Scripts\activate
uv pip install fastapi[standard]
uvicorn[standard]

备选方式(经典 pip + venv)

python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install --upgrade pip
pip install fastapi[standard] uvicorn[standard]

安装完成后运行下面代码测试:

# main.py
from fastapi import FastAPI
app = FastAPI()

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

启动:

uvicorn main:app --reload # 或 python -m uvicorn main:app --reload 

浏览器打开:http://127.0.0.1:8000 看到 JSON 就成功了! 再访问 http://127.0.0.1:8000/docs → 自动 Swagger 界面出现,恭喜你进入 FastAPI 世界!

3. 核心概念速览

概念通俗解释代码例子简写
FastAPI()创建应用实例app = FastAPI()
@app.get/post/…路由装饰器@app.get("/items/{item_id}")
路径参数URL 里的动态部分item_id: int
查询参数?key=valueq: str = None
请求体POST/PUT 里的 JSONitem: Item
Pydantic BaseModel数据验证 + 序列化 + 自动文档class Item(BaseModel): …
Depends依赖注入(认证、数据库、配置等)Depends(get_current_user)
BackgroundTasks后台任务(发邮件、记录日志)background_tasks.add_task(…)

4. 经典入门案例:图书管理 API

我们用一个'简易图书管理系统'贯穿全文。

models.py

from pydantic import BaseModel, Field
from typing import Optional

class BookBase(BaseModel):
    title: str = Field(..., min_length=1, max_length=100)
    author: str = Field(..., min_length=1, max_length=50)
    year: int = Field(..., ge=1900, le=2100)

class BookCreate(BookBase):
    pass

class Book(BookBase):
    id: int
    is_available: bool = True

    class Config:
        from_attributes = True # 兼容 ORM

main.py(逐步添加)

from fastapi import FastAPI, HTTPException, Query, Path
from typing import List
from models import Book, BookCreate

app = FastAPI(title="图书管理 API", version="0.1.0")

# 假数据库
books_db: List[Book] = [
    Book(id=1, title="Python 速成", author="重阳", year=2025),
]

@app.get("/books/", response_model=List[Book])
def get_books(
    skip: int = Query(0, ge=0),
    limit: int = Query(10, ge=1, le=100),
    author: Optional[str] = None
):
    result = books_db[skip : skip + limit]
    if author:
        result = [b for b in result if b.author.lower() == author.lower()]
    return result

@app.get("/books/{book_id}", response_model=Book)
def get_book(book_id: int = Path(..., ge=1)):
    for book in books_db:
        if book.id == book_id:
            return book
    raise HTTPException(status_code=404, detail="图书不存在")

@app.post("/books/", response_model=Book, status_code=201)
def create_book(book: BookCreate):
    new_id = max(b.id for b in books_db) + 1 if books_db else 1
    new_book = Book(id=new_id, **book.model_dump())
    books_db.append(new_book)
    return new_book

启动后就能在 Swagger 上直接测试增删改查了。

目录

  1. 1. 为什么选择 FastAPI
  2. 2. 环境准备
  3. 方式一:用 uv(2025 年最推荐的极简工具,速度比 pip 快 10–100 倍)
  4. main.py
  5. 3. 核心概念速览
  6. 4. 经典入门案例:图书管理 API
  7. 假数据库
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 2019 年信奥赛 C++ 提高组 CSP-S 初赛真题解析(选择题 11-15)
  • 深入理解 C++ STL 优先队列 priority_queue 原理与实现
  • Windows 下手动安装 JDK 21 并配置环境变量
  • 2024 年常见 Redis 面试题:同步机制详解
  • Unreal Engine 5 C++插件开发实战:从零实现高性能插件模块底层架构
  • 数据结构详解:选择排序原理与 Java 实现
  • SysOM 工具深度解析:Linux 服务器监控与内存诊断实践
  • iOS 26 系统兼容适配:UITabBar 液态玻璃效果与 WiFi SSID 获取
  • 数据结构复习:Java 顺序表与 ArrayList 详解
  • 清华智谱团队:6000 亿合成交错语音文本预训练,问答性能提升近 3 倍
  • AR 健身教练“形随心动”:基于 Rokid CXR-M SDK 的 Android 开发实践
  • AIGC 推理延迟优化:C++ 层级吞吐量瓶颈分析
  • MySQL 内置函数实战指南:日期、字符串与数学运算
  • Windows 语音识别效率提升:Whisper 完全使用指南
  • 2025 年机构级 WordPress 主题性能与架构选型指南
  • 程序员进阶必读:数据结构与算法核心知识体系梳理
  • RunningHub 在线 AIGC 创作平台介绍
  • HarmonyOS Location Kit 端侧与云侧地理围栏开发指南
  • 双指针算法:快乐数判断
  • Windows 系统一键部署 OpenClaw AI 助手及公网访问配置
  • 相关免费在线工具

    • 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