FastAPI 怎么入门?新手快速上手指南

文章导读
Previous Quiz Next FastAPI 是一个现代的 Python web 框架,在构建 API 时非常高效。它基于 Python 3.6 及更高版本中添加的类型提示特性。它是 Python 中最快的 web 框架之一。
📋 目录
  1. A FastAPI 环境设置
A A

FastAPI - 介绍



Previous
Quiz
Next

FastAPI 是一个现代的 Python web 框架,在构建 API 时非常高效。它基于 Python 3.6 及更高版本中添加的类型提示特性。它是 Python 中最快的 web 框架之一。

  • 由于它基于 Starlette 和 Pydantic 库的功能,其性能处于最佳水平,与 NodeJS 和 Go 相当。

  • 除了提供高性能外,FastAPI 还为开发提供了显著的速度优势,减少了代码中人为错误,易于学习,并且完全生产就绪。

  • FastAPI 完全兼容著名的 API 标准,即 OpenAPI 和 JSON Schema。

FastAPI 由 Sebastian Ramirez 于 2018 年 12 月开发。FastAPI 0.127.0 是当前可用版本。

FastAPI 环境设置

要安装 FastAPI(建议在虚拟环境中安装),使用 pip3 安装器。

pip3 install fastapi

Collecting fastapi
  Downloading fastapi-0.127.0-py3-none-any.whl.metadata (30 kB)
Collecting starlette<0.51.0,>=0.40.0 (from fastapi)
  Downloading starlette-0.50.0-py3-none-any.whl.metadata (6.3 kB)
Collecting pydantic>=2.7.0 (from fastapi)
  Downloading pydantic-2.12.5-py3-none-any.whl.metadata (90 kB)
Collecting typing-extensions>=4.8.0 (from fastapi)
  Downloading typing_extensions-4.15.0-py3-none-any.whl.metadata (3.3 kB)
Collecting annotated-doc>=0.0.2 (from fastapi)
  Downloading annotated_doc-0.0.4-py3-none-any.whl.metadata (6.6 kB)
Collecting anyio<5,>=3.6.2 (from starlette<0.51.0,>=0.40.0->fastapi)
  Downloading anyio-4.12.0-py3-none-any.whl.metadata (4.3 kB)
Requirement already satisfied: idna>=2.8 in d:\projects\python\myenv\lib\site-packages (from anyio<5,>=3.6.2->starlette<0.51.0,>=0.40.0->fastapi) (3.11)
Collecting annotated-types>=0.6.0 (from pydantic>=2.7.0->fastapi)
  Downloading annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB)
Collecting pydantic-core==2.41.5 (from pydantic>=2.7.0->fastapi)
  Downloading pydantic_core-2.41.5-cp314-cp314-win_amd64.whl.metadata (7.4 kB)
Collecting typing-inspection>=0.4.2 (from pydantic>=2.7.0->fastapi)
  Downloading typing_inspection-0.4.2-py3-none-any.whl.metadata (2.6 kB)
Downloading fastapi-0.127.0-py3-none-any.whl (112 kB)
Downloading starlette-0.50.0-py3-none-any.whl (74 kB)
Downloading anyio-4.12.0-py3-none-any.whl (113 kB)
Downloading annotated_doc-0.0.4-py3-none-any.whl (5.3 kB)
Downloading pydantic-2.12.5-py3-none-any.whl (463 kB)
Downloading pydantic_core-2.41.5-cp314-cp314-win_amd64.whl (2.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 6.1 MB/s  0:00:00
Downloading annotated_types-0.7.0-py3-none-any.whl (13 kB)
Downloading typing_extensions-4.15.0-py3-none-any.whl (44 kB)
Downloading typing_inspection-0.4.2-py3-none-any.whl (14 kB)
Installing collected packages: typing-extensions, anyio, annotated-types, annotated-doc, typing-inspection, starlette, pydantic-core, pydantic, fastapi
Successfully installed annotated-doc-0.0.4 annotated-types-0.7.0 anyio-4.12.0 fastapi-0.127.0 pydantic-2.12.5 pydantic-core-2.41.5 starlette-0.50.0 typing-extensions-4.15.0 typing-inspection-0.4.2

FastAPI 依赖于 StarlettePydantic 库,因此它们也会被安装。

使用 PIP 安装 Uvicorn

FastAPI 没有内置服务器应用。要运行 FastAPI 应用,你需要一个名为 uvicorn 的 ASGI server,因此也使用 pip3 安装它。它还会安装 uvicorn 的依赖项 - asgiref、click、h11 和 typing-extensions。

pip3 install uvicorn

Collecting uvicorn
  Downloading uvicorn-0.40.0-py3-none-any.whl.metadata (6.7 kB)
Collecting click>=7.0 (from uvicorn)
  Downloading click-8.3.1-py3-none-any.whl.metadata (2.6 kB)
Collecting h11>=0.8 (from uvicorn)
  Downloading h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)
Collecting colorama (from click>=7.0->uvicorn)
  Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)
Downloading uvicorn-0.40.0-py3-none-any.whl (68 kB)
Downloading click-8.3.1-py3-none-any.whl (108 kB)
Downloading h11-0.16.0-py3-none-any.whl (37 kB)
Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Installing collected packages: h11, colorama, click, uvicorn
Successfully installed click-8.3.1 colorama-0.4.6 h11-0.16.0 uvicorn-0.40.0

安装这两个库后,我们可以查看迄今为止安装的所有库。

pip3 freeze

annotated-doc==0.0.4
annotated-types==0.7.0
anyio==4.12.0
asgiref==3.11.0
certifi==2025.11.12
cffi==2.0.0
charset-normalizer==3.4.4
click==8.3.1
colorama==0.4.6
crypto==1.4.1
cryptography==46.0.3
Django==6.0
django-embed-video==1.4.10
easy-thumbnails==2.10.1
fastapi==0.127.0
h11==0.16.0
idna==3.11
Naked==0.1.32
onetimepad==1.4
paperclip==2.7.4
pillow==12.0.0
pycparser==2.23
pycryptodome==3.23.0
pydantic==2.12.5
pydantic_core==2.41.5
pyDes==2.0.1
pyperclip==1.11.0
python-magic==0.4.27
PyYAML==6.0.3
requests==2.32.5
shellescape==3.8.1
sqlparse==0.5.5
starlette==0.50.0
typing-inspection==0.4.2
typing_extensions==4.15.0
tzdata==2025.3
urllib3==2.6.2
uvicorn==0.40.0