FastAPI() 是用来创建一个 FastAPI 应用实例的构造器。
这个实例是一个完整的 ASGI 应用(可被 Uvicorn/Hypercorn 等服务器直接运行),负责管理路由、文档、依赖注入、事件生命周期、中间件、异常处理、OpenAPI 生成等所有框架级功能。
本质 — 一个 ASGI 应用对象
app = FastAPI() 返回的 app 是一个 ASGI callable,遵循 ASGI 协议(异步服务器网关接口)。
你用 uvicorn app:app(或 uvicorn module:app)启动时,uvicorn 会把请求转给这个 app 来处理。
它做什么(职责一览)
- 管理路由(通过 @app.get() / @app.post() 等装饰器或 include_router)
- 自动生成 OpenAPI / Swagger / ReDoc 文档(基于函数签名 + Pydantic 模型)
- 支持同步与异步视图(def 或 async def)
- 依赖注入系统(Depends())用于验证、权限、DB session 等共享逻辑
- 生命周期事件(@app.on_event(“startup”) / “shutdown” 或 lifespan)
- 中间件管理(app.add_middleware(…))
- 异常处理(app.add_exception_handler(…))
- 静态文件和挂载子应用(app.mount(“/static”, StaticFiles(…)))
- 背景任务(BackgroundTasks)
- 测试友好(TestClient(app) 可直接用于单元测试)
常用构造参数
FastAPI(
title=”My API”,
description=”服务描述”,
version=”1.0.0″,
docs_url=”/docs”, # Swagger UI 路径,设为 None 可禁用
redoc_url=”/redoc”, # ReDoc 路径
openapi_url=”/openapi.json”,
openapi_tags=[…], # OpenAPI 分组标签
dependencies=[Depends(…)], # 所有路由的全局依赖
middleware=[…], # 初始中间件(不常直接传)
lifespan=lifespan_callable, # 自定义 lifespan,上替代 on_event
default_response_class=JSONResponse,
debug=True|False
)
title/version/description 会出现在 /docs、/redoc 和 /openapi.json 中(用于 API 文档和元数据)。
lifespan:替代 @on_event(“startup”)/”shutdown” 的可异步/同步上下文管理器,用于初始化资源(例如连接池、外部客户端等)。
自动文档(OpenAPI)的关键点
astAPI 会根据函数参数类型注解(普通参数、Pydantic 模型、Query/Path/Body)自动推断请求/响应模式,生成 OpenAPI spec。
因此写接口时:用 Pydantic 定义请求/响应模型,可以立刻看到结构化的 Swagger 文档,无需额外注释。