首页 / FastAPI 入门教程 / FastAPI 简介:特性、优势与适用场景

FastAPI 入门教程

FastAPI 简介:特性、优势与适用场景

本教程共 50 篇 · 第 1 篇 · 更新于 2026-08-12 · 约 7 分钟阅读

FastAPIFastAPI 入门教程FastAPI 简介StarlettePydantic异步框架

本节目标:搞懂 FastAPI 到底是什么、靠什么做到又快又好用,并判断它适合用在哪些项目里。

1-1 什么是 FastAPI

FastAPI 是一个用 Python 写 Web API 的现代框架。它的目标是帮你又快又稳地做出接口服务。

“API” 可以理解为一套规则,让不同的程序之间互相说话。比如手机 App 向服务器要数据,用的就是 API。

FastAPI 这个名字已经说清了两件事。“Fast” 指它性能好、开发也快。“API” 指它专门为写接口而生。

它从 2018 年底由 Sebastian Ramírez 发起,如今已是 Python 圈最热门的接口框架之一。

Note

FastAPI 专注做”后端接口”,不是用来直接渲染网页的模板引擎。你要做网站页面,通常配合前端框架或模板工具。

1-2 它的技术底座:Starlette 与 Pydantic

FastAPI 并不从零造轮子,而是站在两个成熟库肩上工作。

第一层是 Starlette。它负责最底层的 Web 能力:路由、请求响应、中间件、WebSocket 等。FastAPI 本身就继承自 Starlette 类,所以 Starlette 的功能它全能用。

第二层是 Pydantic。它负责数据这件事:把你收到的 JSON 自动变成带类型的 Python 对象,并做校验。你写的类型注解,就是它工作的依据。

第三层是 Uvicorn。它是真正把应用跑起来的 ASGI 服务器。你可以把它想成”发动机”,FastAPI 是”车架”,发动机提供动力。

Tip

记住一句口诀:Starlette 管”怎么接请求”,Pydantic 管”怎么处理数据”,Uvicorn 管”怎么跑起来”。

1-3 类型提示驱动:写代码就像写说明

FastAPI 最与众不同的地方,是它把 Python 的类型提示当成了核心功能。

类型提示就是你给变量标上”这是什么类型”。比如 name: str 表示 name 是字符串。

在其他框架里,类型往往只是”给人看的注释”。但在 FastAPI 里,类型提示会被真正用来:自动校验数据、自动生成文档、自动给出编辑器补全。

你不需要学一套新语法,用的就是标准 Python。这一点对初学者非常友好。

from fastapi import FastAPI

app = FastAPI()


@app.get("/hello")
async def hello(name: str):
    # name 被声明为 str,FastAPI 会自动校验它
    return {"msg": f"你好,{name}"}

上面这个函数,FastAPI 会知道 name 是必填的字符串参数,并在文档里写清楚。

1-4 自动交互文档:写完代码就有文档

这是很多人爱上 FastAPI 的原因。你每写一个接口,它就自动生成两套在线文档。

第一套是 Swagger UI,地址是 /docs。它不仅能看,还能直接在网页里填参数、点按钮发请求测试。

第二套是 ReDoc,地址是 /redoc。它排版更适合阅读,适合慢慢浏览接口定义。

这两套文档不是手工维护的,而是 FastAPI 根据你的代码实时生成的。你改了代码,文档就跟着变。

Note

自动文档基于 OpenAPI 标准。后面会有专门一章带你玩转 /docs/redoc

1-5 异步支持与高性能

FastAPI 原生支持 async/await 异步写法。简单说,它能在等待一个慢操作(比如查数据库)时,去处理别的请求,从而支撑更高的并发。

性能上,FastAPI 属于 Python 框架里最快的一档,官方 benchmark 显示它和 NodeJS、Go 处于同一水平。这得益于底层的 Starlette 与 Uvicorn 都用高效实现。

写代码时,默认推荐用 async def。只有在做明显阻塞的操作时才用普通 def,这点后面会讲清楚。

import asyncio
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
async def root():
    # 模拟一个异步等待操作
    await asyncio.sleep(0.1)
    return {"message": "Hello World"}

1-6 与其他框架客观对比

初学者常问:Flask、Django、FastAPI 到底选哪个?它们各有侧重,没有绝对好坏。

Flask 轻巧灵活,学习曲线低,但自动文档、数据校验都要自己接第三方。适合小项目或想完全掌控结构的场景。

Django 功能全面,自带 Admin、ORM、模板,适合大而全的网站。但它传统上偏同步,生态偏向”全栈”。

FastAPI 介于两者之间偏”接口专用”。它天生异步,自带文档与校验,特别适合做纯 API 后端、微服务、机器学习服务接口。

Tip

如果你是做前后端分离、App 后端、AI 模型接口,FastAPI 往往是最省心的选择。如果你要快速搭一个带后台管理的完整网站,Django 也很成熟。

对比维度FastAPIFlaskDjango
性能模型异步 ASGI同步 WSGI同步 WSGI
自动文档内置两套需扩展需扩展
数据校验内置 Pydantic需手写需手写
异步支持原生需扩展部分支持
学习曲线较高
适合规模接口/微服务中小型大型全栈

1-7 FastAPI 适合用在哪

基于上面的特性,下面是 FastAPI 的常见落地场景。

RESTful API 后端:前后端分离架构里,它作为后端提供 JSON 接口,非常顺手。

微服务:它轻量、启动快,适合拆成多个小服务独立部署。

机器学习服务:训练好的模型可以用 FastAPI 包成接口,前端或其他服务直接调用。

数据处理接口:接收 JSON、返回 JSON 的数据处理服务,它的校验能力能省很多心。

实时通信:基于 Starlette 的 WebSocket 支持,它也能做聊天、推送等实时场景。

Note

如果你需要的是渲染完整网页(带模板、会话、Admin 后台),可以搭配 Jinja2 模板,或考虑 Django。FastAPI 主战场仍是接口。

1-8 小结:为什么值得学

FastAPI 把”快”做到了两个层面:运行快、开发也快。类型提示驱动的设计,让你少写重复代码,少出低级错误。

它站在 Starlette 和 Pydantic 两个成熟肩膀上,标准、稳定、生态活跃。自动文档让前后端协作成本大幅下降。

对 0 基础同学来说,你只要会一点 Python 语法和类型注解,就能顺着本教程一步步搭出自己的接口服务。下一章,我们先把开发环境准备好。