Python 中的 import fastapi:不仅仅是一行导入

Python 中的 import fastapi:不仅仅是一行导入
很多人在第一次接触 FastAPI 时,都会看到这样一行代码:
from fastapi import FastAPI
看起来非常简单,但这行代码背后其实涉及:
- Python 模块系统
- Web 框架设计
- ASGI 生态
- 应用实例的创建方式
如果只是照着教程写,很容易“会用但不理解”。
这篇文章就从开发者的角度,聊聊 import fastapi 到底发生了什么,以及为什么 FastAPI 要这样设计。
一、FastAPI 是什么?
先简单一句话概括:
FastAPI 是一个基于 Python 类型提示的现代 Web 框架。
它的核心特点:
| 特性 | 说明 |
|---|---|
| 🚀 高性能 | 基于 Starlette + Uvicorn |
| 📘 自动文档 | 自动生成 Swagger / ReDoc |
| 🧠 类型驱动 | 利用 Python type hints |
| ⚡ 开发效率高 | 非常适合 API 服务 |
安装也非常简单:
pip install fastapi
pip install uvicorn
二、为什么是 from fastapi import FastAPI
最经典的 FastAPI 示例:
from fastapi import FastAPI
app = FastAPI()
很多人会问:
为什么不是:
import fastapi
而是:
from fastapi import FastAPI
原因其实很简单。
FastAPI 框架本身是一个 Python 包(package),里面包含很多模块。
结构大概类似这样:
fastapi/
├── routing.py
├── params.py
├── applications.py
├── responses.py
└── __init__.py
而 FastAPI 这个类,其实定义在:
fastapi/applications.py
但为了让开发者使用更方便,在 __init__.py 里做了导出:
from .applications import FastAPI
所以我们可以直接写:
from fastapi import FastAPI
而不用写:
from fastapi.applications import FastAPI
📌 这是一种 框架设计的 API 简化策略。
三、FastAPI() 实际创建了什么?
当你写:
app = FastAPI()
其实做了几件事:
| 步骤 | 发生了什么 |
|---|---|
| 1 | 创建 ASGI 应用 |
| 2 | 初始化路由系统 |
| 3 | 初始化依赖注入系统 |
| 4 | 注册 OpenAPI 文档 |
也就是说:
FastAPI()本质是创建一个 ASGI Web 应用对象。
这个对象之后会交给 Uvicorn 运行。
例如:
uvicorn main:app --reload
含义是:
main.py 文件中的 app 对象
四、FastAPI 的基本结构
一个最简单的 FastAPI 项目通常是这样的:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello FastAPI"}
运行:
uvicorn main:app --reload
浏览器访问:
http://127.0.0.1:8000
返回:
{
"message": "Hello FastAPI"
}
五、FastAPI 为什么推荐这种写法?
很多框架都会设计一种 推荐结构。
FastAPI 的官方建议结构是:
project/
├── main.py
├── routers/
├── models/
├── services/
└── schemas/
示例:
from fastapi import FastAPI
from routers import user
app = FastAPI()
app.include_router(user.router)
优点:
- 结构清晰
- 方便扩展
- 更适合团队开发
六、import FastAPI 的最佳实践
在实际项目中,我通常遵循几个原则。
1️⃣ 不要在多个文件创建 FastAPI()
错误示例:
app = FastAPI()
多个地方写。
正确做法:
只创建一个 app
统一在:
main.py
2️⃣ 使用 Router 组织 API
例如:
from fastapi import APIRouter
router = APIRouter()
@router.get("/users")
def get_users():
return []
然后在主应用注册:
app.include_router(router)
这样代码会更干净。
3️⃣ 配合类型提示
FastAPI 最大优势就是 类型驱动开发。
例如:
@app.get("/users/{user_id}")
def get_user(user_id: int):
return {"user_id": user_id}
好处:
- 自动参数校验
- 自动文档
- IDE 自动补全
七、自动文档是怎么来的?
FastAPI 有一个非常强的功能:
自动生成 API 文档。
只要写好类型:
@app.get("/items/{id}")
def get_item(id: int):
return {"id": id}
打开:
http://127.0.0.1:8000/docs
就能看到:
📘 Swagger UI
再打开:
/redoc
就能看到:
📗 ReDoc 文档。
这也是 FastAPI 在微服务和 AI API 中非常流行的原因。
八、FastAPI 在实际项目中的定位
FastAPI 非常适合做:
| 场景 | 说明 |
|---|---|
| API 服务 | Web API |
| AI 服务 | LLM / 推理接口 |
| 数据服务 | 数据查询接口 |
| 微服务 | 后端服务 |
很多 AI 项目现在都是:
FastAPI + Docker + Kubernetes
九、总结
看似简单的一行代码:
from fastapi import FastAPI
背后其实涉及:
- Python 模块系统
- ASGI Web 标准
- Web 框架设计
- 类型驱动 API
简单总结一下:
| 内容 | 结论 |
|---|---|
| FastAPI 是什么 | 高性能 Python Web 框架 |
FastAPI() | 创建 ASGI 应用 |
from fastapi import FastAPI | 框架导出类 |
| 推荐结构 | Router + 主应用 |
最后送大家一句我在项目里很认同的话:
好的 Web 框架不是让你写更多代码,而是让你写更少代码。
而 FastAPI,正是这样一个框架。
更多推荐


所有评论(0)