fastapi/fastapi

FastAPI framework, high performance, easy to learn, fast to code, ready for production

FastAPI – 用于 API 的高性能 Python Web 框架

是什么 – FastAPI 是一个现代的、可投入生产环境的 Web 框架,用于使用 Python 构建 HTTP API。它利用标准 Python 类型提示、Starlette 作为异步 Web 核心,以及 Pydantic 进行数据验证/序列化。

为何重要 – 该框架在性能上可与 Node.js 或 Go 相媲美,同时保持开发体验的简洁:你只需编写普通的 Python 函数,即可免费获得自动请求验证、序列化以及交互式 OpenAPI 文档(Swagger UI 与 ReDoc)。


核心功能(如 README 所列)

  • 性能 – 基于 Starlette 和 Pydantic;是最快的 Python API 框架之一。
  • 开发速度快 – 通常开发速度提升 200–300%。
  • 减少错误 – 由于自动验证,开发者引入的错误减少约 40%。
  • 智能编辑器支持 – 完全支持类型感知的自动补全和语法检查。
  • 标准规范 – 自动生成 OpenAPI(Swagger)和 JSON-Schema 规范。
  • 自动文档 – 内置交互式 Swagger UI 和 ReDoc 接口,开箱即用。
  • 依赖注入 – 简单的基于类型的 DI 系统,支持清晰的架构设计。
  • 安全助手 – 内置 OAuth2、JWT、HTTP Basic 等功能。
  • 可扩展性 – 通过 Starlette 扩展支持 WebSocket、CORS、Cookie 会话、GraphQL(通过 Strawberry)等。

典型使用场景

  • 微服务和内部 API。
  • 机器学习模型或数据流水线的公开 RESTful 服务。
  • 需要快速迭代的 Web 或移动应用后端。
  • 需要自动 OpenAPI 文档的原型设计和生产部署。

快速上手(来自 README)

# 使用 uv(或 pip)安装 – "standard" 额外包包含推荐的依赖项
uv add "fastapi[standard]"

创建 main.py

from fastapi import FastAPI

app = FastAPI()

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

@app.get('/items/{item_id}')
def read_item(item_id: int, q: str | None = None):
    return {"item_id": item_id, "q": q}

运行开发服务器:

uv run fastapi dev   # 自动重载,服务地址为 http://127.0.0.1:8000

访问 http://127.0.0.1:8000/docs(Swagger UI)或 .../redoc 查看替代 UI。


扩展示例(PUT 请求带请求体)

from pydantic import BaseModel

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool | None = None

@app.put('/items/{item_id}')
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

文档会自动更新以显示新的请求体结构。


部署选项

  • FastAPI Cloud – 通过 uv run fastapi deploy 一键部署(由同一团队提供)。
  • 任何 ASGI 兼容主机(Uvicorn、Hypercorn、Gunicorn + Uvicorn 工作进程、Docker、无服务器平台等)。

谁在使用

README 提到 Microsoft、Uber(Ludwig)、Netflix(Dispatch)、Cisco 以及许多其他公司已在生产环境中使用。


TL;DR

FastAPI 让你编写标准 Python 函数,用类型提示标注,即可立即获得:

  • 高性能异步处理,
  • 自动请求验证与响应序列化,
  • 实时 OpenAPI 文档,
  • 强大的编辑器支持。 学习曲线极低,是现代 Python API 的首选方案。

相关

  • 项目
  • 项目
  • 项目
  • Dispatch
  • 项目