This commit is contained in:
zy7y 2022-10-04 13:01:38 +08:00
parent b5bf2c21b1
commit 60d07a477a
2 changed files with 20 additions and 5 deletions

View File

@ -51,7 +51,12 @@ def get_system_info():
def load_routers(
app, package_path: str = "router", router_name: str = "router", is_init=False
app,
package_path: str = "router",
router_name: str = "router",
is_init=False,
no_depends="common",
depends: list = None,
):
"""
自动注册路由
@ -59,6 +64,8 @@ def load_routers(
:param package_path: 路由包所在路径默认相对路径router包
:param router_name: APIRouter实例名称需所有实例统一默认router
:param is_init: 是否在包中的__init__.py中导入了所有APIRouter实例默认否
:param no_depends: 不需要依赖注入的模块py文件默认common
:param depends: 依赖注入列表 默认为None
:return: 默认None
"""
@ -66,9 +73,15 @@ def load_routers(
"""注册路由module_obj 模块对象"""
if hasattr(module_obj, router_name):
router_obj = getattr(module_obj, router_name)
app.include_router(router_obj)
if no_depends in module_obj.__name__:
kwargs = dict(router=router_obj)
else:
kwargs = dict(router=router_obj, dependencies=depends)
app.include_router(**kwargs)
logger.info("开始扫描路由。")
if depends is None:
depends = []
if is_init:
# 1. init 导入了其他自文件包时
for _, module in inspect.getmembers(

View File

@ -1,9 +1,9 @@
from fastapi import FastAPI
from fastapi import Depends, FastAPI
from core.events import close_orm, init_orm
from core.exceptions import exception_handlers
from core.log import logger
from core.middleware import middlewares
from core.security import check_permissions
from core.utils import load_routers
app = FastAPI(
@ -13,7 +13,9 @@ app = FastAPI(
exception_handlers=exception_handlers,
)
load_routers(app, "controller")
load_routers(
app, "controller", no_depends="common", depends=[Depends(check_permissions)]
)
if __name__ == "__main__":
import uvicorn