fastapi: 多个子应用:同一个项目中包含接口站和管理后台站

一,什么是子应用挂载?

子应用挂载(Sub-Applications)
这是 FastAPI 官方支持的一种模式。
它将 API 和 Admin 当作两个完全独立的 FastAPI 实例开发,最后通过 app.mount() 组合在一起。
它的优势
  • 路由与文档完全隔离:API 和 Admin 有各自独立的 /docs(Swagger 文档页面)。
  • 中间件隔离:Admin 站点的 Session 校验或 Cookie 中间件不会污染纯净的 API 站点。
  • 独立运行能力:在开发时,你可以单独启动 API 实例或 Admin 实例。

这种做法确实不够专业,因为接口站和管理后台正常情况下应该分不同项目开发并分开部署,
但常做小项目的朋友都知道:这个做法很多时候是必需的

二,结构

image

三,代码

管理后台:

# app/admin/main.py

# app/admin/main.py
from fastapi import FastAPI
from app.admin.views import users
from app.core.exceptions import register_exception_handlers
from fastapi.staticfiles import StaticFiles

from app.core.redislink import lifespan

# 创建FastAPI应用,并传入 lifespan
admin_app = FastAPI(lifespan=lifespan,title="我的admin项目")

# 注册全局异常捕获
register_exception_handlers(admin_app)

admin_app.mount("/static", StaticFiles(directory="app/static"), name="static")

# 注册路由模块
admin_app.include_router(users.router)

接口站:

# app/api/main.py
from fastapi import FastAPI
from app.api.v1 import tasktest, toke, users, account, products
from app.core.exceptions import register_exception_handlers
from fastapi.staticfiles import StaticFiles

from app.core.redislink import lifespan

# 创建FastAPI应用,并传入 lifespan
api_app = FastAPI(lifespan=lifespan,title="我的API项目")

# 注册全局异常捕获
register_exception_handlers(api_app)

# 🚀 注册中间件
# app.add_middleware(SignatureMiddleware)

# 1. 挂载静态文件目录
api_app.mount("/static", StaticFiles(directory="app/static"), name="static")

# 注册路由模块
api_app.include_router(users.router)
api_app.include_router(products.router)
api_app.include_router(account.router)
api_app.include_router(toke.router)
api_app.include_router(tasktest.router)

 

根目录下main.py

from fastapi import FastAPI
from app.api.main import api_app
from app.admin.main import admin_app

# 创建一个干净的根应用
app = FastAPI(title="企业级项目总网关", docs_url=None, redoc_url=None)

# 挂载子应用
app.mount("/api", api_app)      # 所有 /api/* 路由交由 api_app 处理
app.mount("/admin", admin_app)  # 所有 /admin/* 路由交由 admin_app 处理

四,测试效果 :

访问管理后台:

image

访问接口:

image

 

 
posted @ 2026-06-21 13:08  刘宏缔的架构森林  阅读(38)  评论(0)    收藏  举报