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
- 项目