🐸 青蛙编程网
首页 / Python / FastAPI / 1. FastAPI 是什么

FastAPI 是什么

这是什么:FastAPI 是一个现代、高性能的 Python Web 框架,专注于快速构建 API——你用类型注解描述参数,它负责自动校验、自动转换、自动生成文档。

为什么用:现代后端的主战场是「写 API 吐 JSON」:小程序、App、前端页面、AI 应用全靠接口吃饭。用 Flask 写接口,参数校验要手写、接口文档要手补;FastAPI 把这两件最烦的事自动化了,还原生支持异步,快得理直气壮。

如何用:本章先建立对它的整体认知,搞清和 Flask 的分工,下一章就用 4 行代码把服务跑起来。

一句话原理:类型注解在打工

FastAPI 的魔法核心是一句话:你声明参数是什么类型,它就自动按这个类型校验和转换。

def read_item(item_id: int, q: str = "hello"):
    ...

这一行函数签名在 FastAPI 眼里是完整的需求单:item_id 必须是整数(不是就自动回 422 报错),q 是可选字符串、默认 "hello"。不用手写 int(request.args.get(...)),不用手写 if 校验——签名即文档,文档即测试。

三大特性

特性 什么意思 你得到什么
类型注解驱动 函数签名里的 int、str、自定义类都参与校验 非法请求自动被拦下,返回清晰的错误明细
自动交互文档 根据代码自动生成 /docs 页面 浏览器里点开就能填参数、发请求、看响应,Postman 都省了
原生异步 async def 直接写,底层基于 Starlette 高并发场景(如 AI 接口转发)性能出色

它不是从零造轮子:底层 Web 能力来自 Starlette(异步框架),数据校验来自 Pydantic(类型校验库),FastAPI 把两者黏合成「写起来最舒服」的形态。会用就行,不必深究。

FastAPI vs Flask:分工与对照

场景 更适合 原因
渲染网页的小站、个人博客 Flask 模板渲染顺手,生态成熟(你在学的这个博客后端就是这类)
前后端分离的 API 后端 FastAPI JSON 接口为主,自动校验 + 文档是刚需
AI / 大模型服务接口 FastAPI 异步高并发 + 流式响应支持好,LLM 服务端标配
内部工具、快速原型 都行 会哪个用哪个

概念几乎一一对应,学过 Flask 的你迁移成本极低:

概念 Flask FastAPI
起实例 Flask(__name__) FastAPI()
挂路由 @app.route("/") @app.get("/")
开发服务器 flask run uvicorn main:app --reload
接收参数 request.args 手动取 函数签名自动注入

它出现在哪

  • AI 服务端:给大模型套一层 HTTP 接口(你以后学 LLM 教程调用的很多服务就是这么搭的)
  • 前后端分离:给 Vue / React 页面供数据,本站后台管理就是这么分工的
  • 微服务 / 内部工具:类型校验 + 自动文档让团队协作省心

记忆口诀:签名写类型,校验它全包;docs 点一点,文档自动标。

📝 本章小结

  • FastAPI 是类型注解驱动的现代 API 框架:自动校验、自动文档、原生异步
  • 底层 = Starlette(Web)+ Pydantic(校验),FastAPI 负责黏合与易用
  • 与 Flask 概念一一对应;Flask 擅网页渲染,FastAPI 擅纯 API 与高并发
  • 自动交互文档 /docs 是它最出圈的魅力,下一章亲眼见

动手改

  1. 去 FastAPI 官方文档首页扫一眼,感受一下「签名即文档」的代码长相
  2. 对着上表把 Flask 的对应概念回忆一遍,说不出的标记出来,后面章节重点看
  3. 想一个你做过的(或想做的)项目,判断它更适合 Flask 还是 FastAPI

下一章:第一个应用,4 行代码把服务跑起来 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。