FastAPI()

作者admin

12月 1, 2025

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 文档,无需额外注释。

作者 admin

百度广告效果展示