在这里插入图片描述

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,正是这样一个框架。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐