From a8478ff8a529b72942f1b1f7362ab5d3de42cec7 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Fri, 26 Jan 2024 10:46:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AD=90=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E3=80=81=E4=B8=AD=E9=97=B4=E4=BB=B6=E3=80=81=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E6=8C=82=E8=BD=BD?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-fastapi-backend/exceptions/handle.py | 42 +++++++++---------- .../middlewares/cors_middleware.py | 29 ++++++------- ruoyi-fastapi-backend/middlewares/handle.py | 10 +++++ ruoyi-fastapi-backend/server.py | 13 ++++++ .../sub_applications/handle.py | 10 +++++ .../sub_applications/staticfiles.py | 9 ++-- 6 files changed, 75 insertions(+), 38 deletions(-) create mode 100644 ruoyi-fastapi-backend/middlewares/handle.py create mode 100644 ruoyi-fastapi-backend/sub_applications/handle.py diff --git a/ruoyi-fastapi-backend/exceptions/handle.py b/ruoyi-fastapi-backend/exceptions/handle.py index c14b4e5..61b7f90 100644 --- a/ruoyi-fastapi-backend/exceptions/handle.py +++ b/ruoyi-fastapi-backend/exceptions/handle.py @@ -1,27 +1,27 @@ -from fastapi import Request +from fastapi import FastAPI, Request from fastapi.exceptions import HTTPException -from server import app -from exceptions.auth_exception import AuthException -from exceptions.permission_exception import PermissionException +from exceptions.exception import AuthException, PermissionException from utils.response_util import ResponseUtil, JSONResponse, jsonable_encoder -# 自定义token检验异常 -@app.exception_handler(AuthException) -async def auth_exception_handler(request: Request, exc: AuthException): - return ResponseUtil.unauthorized(data=exc.data, msg=exc.message) +def handle_exception(app: FastAPI): + """ + 全局异常处理 + """ + # 自定义token检验异常 + @app.exception_handler(AuthException) + async def auth_exception_handler(request: Request, exc: AuthException): + return ResponseUtil.unauthorized(data=exc.data, msg=exc.message) + # 自定义权限检验异常 + @app.exception_handler(PermissionException) + async def permission_exception_handler(request: Request, exc: PermissionException): + return ResponseUtil.forbidden(data=exc.data, msg=exc.message) -# 自定义权限检验异常 -@app.exception_handler(PermissionException) -async def permission_exception_handler(request: Request, exc: PermissionException): - return ResponseUtil.forbidden(data=exc.data, msg=exc.message) - - -# 处理其他http请求异常 -@app.exception_handler(HTTPException) -async def http_exception_handler(request: Request, exc: HTTPException): - return JSONResponse( - content=jsonable_encoder({"code": exc.status_code, "msg": exc.detail}), - status_code=exc.status_code - ) + # 处理其他http请求异常 + @app.exception_handler(HTTPException) + async def http_exception_handler(request: Request, exc: HTTPException): + return JSONResponse( + content=jsonable_encoder({"code": exc.status_code, "msg": exc.detail}), + status_code=exc.status_code + ) diff --git a/ruoyi-fastapi-backend/middlewares/cors_middleware.py b/ruoyi-fastapi-backend/middlewares/cors_middleware.py index 372ff30..4b78db9 100644 --- a/ruoyi-fastapi-backend/middlewares/cors_middleware.py +++ b/ruoyi-fastapi-backend/middlewares/cors_middleware.py @@ -1,18 +1,19 @@ +from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware -from server import app -# 前端页面url -origins = [ - "http://localhost:80", - "http://127.0.0.1:80", -] +def add_cors_middleware(app: FastAPI): + # 前端页面url + origins = [ + "http://localhost:80", + "http://127.0.0.1:80", + ] -# 后台api允许跨域 -app.add_middleware( - CORSMiddleware, - allow_origins=origins, - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) + # 后台api允许跨域 + app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], + ) diff --git a/ruoyi-fastapi-backend/middlewares/handle.py b/ruoyi-fastapi-backend/middlewares/handle.py new file mode 100644 index 0000000..311ec6b --- /dev/null +++ b/ruoyi-fastapi-backend/middlewares/handle.py @@ -0,0 +1,10 @@ +from fastapi import FastAPI +from middlewares.cors_middleware import add_cors_middleware + + +def handle_middleware(app: FastAPI): + """ + 全局中间件处理 + """ + # 加载跨域中间件 + add_cors_middleware(app) diff --git a/ruoyi-fastapi-backend/server.py b/ruoyi-fastapi-backend/server.py index 6c89870..f7f85c2 100644 --- a/ruoyi-fastapi-backend/server.py +++ b/ruoyi-fastapi-backend/server.py @@ -1,5 +1,8 @@ from fastapi import FastAPI from contextlib import asynccontextmanager +from sub_applications.handle import handle_sub_applications +from middlewares.handle import handle_middleware +from exceptions.handle import handle_exception from module_admin.controller.login_controller import loginController from module_admin.controller.captcha_controller import captchaController from module_admin.controller.user_controller import userController @@ -24,6 +27,7 @@ from utils.log_util import logger from utils.common_util import worship +# 生命周期事件 @asynccontextmanager async def lifespan(app: FastAPI): logger.info(f"{AppConfig.app_name}开始启动") @@ -39,6 +43,7 @@ async def lifespan(app: FastAPI): await SchedulerUtil.close_system_scheduler() +# 初始化FastAPI对象 app = FastAPI( title=AppConfig.app_name, description=f'{AppConfig.app_name}接口文档', @@ -46,7 +51,15 @@ app = FastAPI( lifespan=lifespan ) +# 挂载子应用 +handle_sub_applications(app) +# 加载中间件处理方法 +handle_middleware(app) +# 加载全局异常处理方法 +handle_exception(app) + +# 加载路由列表 controller_list = [ {'router': loginController, 'tags': ['登录模块']}, {'router': captchaController, 'tags': ['验证码模块']}, diff --git a/ruoyi-fastapi-backend/sub_applications/handle.py b/ruoyi-fastapi-backend/sub_applications/handle.py new file mode 100644 index 0000000..df2a5f4 --- /dev/null +++ b/ruoyi-fastapi-backend/sub_applications/handle.py @@ -0,0 +1,10 @@ +from fastapi import FastAPI +from sub_applications.staticfiles import mount_staticfiles + + +def handle_sub_applications(app: FastAPI): + """ + 全局处理子应用挂载 + """ + # 挂载静态文件 + mount_staticfiles(app) diff --git a/ruoyi-fastapi-backend/sub_applications/staticfiles.py b/ruoyi-fastapi-backend/sub_applications/staticfiles.py index bb7da54..6899035 100644 --- a/ruoyi-fastapi-backend/sub_applications/staticfiles.py +++ b/ruoyi-fastapi-backend/sub_applications/staticfiles.py @@ -1,7 +1,10 @@ +from fastapi import FastAPI from fastapi.staticfiles import StaticFiles -from server import app from config.env import UploadConfig -# 挂载静态文件路径 -app.mount(f"{UploadConfig.UPLOAD_PREFIX}", StaticFiles(directory=f"{UploadConfig.UPLOAD_PATH}"), name="profile") +def mount_staticfiles(app: FastAPI): + """ + 挂载静态文件 + """ + app.mount(f"{UploadConfig.UPLOAD_PREFIX}", StaticFiles(directory=f"{UploadConfig.UPLOAD_PATH}"), name="profile")