From e44aab09442389cffbeab602eb12e302b7de7b26 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Wed, 24 Jun 2026 09:56:53 +0800 Subject: [PATCH] perf: Add API documentation toggle control --- backend/common/core/config.py | 2 ++ backend/main.py | 39 ++++++++++++++++++----------------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/backend/common/core/config.py b/backend/common/core/config.py index 6782c1609..4b9baeaec 100644 --- a/backend/common/core/config.py +++ b/backend/common/core/config.py @@ -75,6 +75,8 @@ def API_V1_STR(self) -> str: SCRIPT_DIR: str = f"{BASE_DIR}/scripts" UPLOAD_DIR: str = "/opt/sqlbot/data/file" SQLBOT_KEY_EXPIRED: int = 100 # License key expiration timestamp, 0 means no expiration + + SQLBOT_DOC_ENABLED: bool = True @computed_field # type: ignore[prop-decorator] @property diff --git a/backend/main.py b/backend/main.py index 3a72bb06e..60d576af2 100644 --- a/backend/main.py +++ b/backend/main.py @@ -70,7 +70,7 @@ def custom_generate_unique_id(route: APIRoute) -> str: app = FastAPI( title=settings.PROJECT_NAME, - openapi_url=f"{settings.CONTEXT_PATH}/openapi.json", + openapi_url=f"{settings.CONTEXT_PATH}/openapi.json" if settings.SQLBOT_DOC_ENABLED else None, generate_unique_id_function=custom_generate_unique_id, lifespan=lifespan, docs_url=None, @@ -152,24 +152,25 @@ def generate_openapi_for_lang(lang: str) -> Dict[str, Any]: # custom /openapi.json and /docs -@app.get(f"{settings.CONTEXT_PATH}/openapi.json", include_in_schema=False) -async def custom_openapi(request: Request): - lang = get_language_from_request(request) - schema = generate_openapi_for_lang(lang) - return JSONResponse(schema) - - -@app.get(f"{settings.CONTEXT_PATH}/docs", include_in_schema=False) -async def custom_swagger_ui(request: Request): - lang = get_language_from_request(request) - from fastapi.openapi.docs import get_swagger_ui_html - return get_swagger_ui_html( - openapi_url=f"./openapi.json?lang={lang}", - title="SQLBot API Docs", - swagger_favicon_url="https://fastapi.tiangolo.com/img/favicon.png", - swagger_js_url="./swagger-ui-bundle.js", - swagger_css_url="./swagger-ui.css", - ) +if settings.SQLBOT_DOC_ENABLED: + @app.get(f"{settings.CONTEXT_PATH}/openapi.json", include_in_schema=False) + async def custom_openapi(request: Request): + lang = get_language_from_request(request) + schema = generate_openapi_for_lang(lang) + return JSONResponse(schema) + + + @app.get(f"{settings.CONTEXT_PATH}/docs", include_in_schema=False) + async def custom_swagger_ui(request: Request): + lang = get_language_from_request(request) + from fastapi.openapi.docs import get_swagger_ui_html + return get_swagger_ui_html( + openapi_url=f"./openapi.json?lang={lang}", + title="SQLBot API Docs", + swagger_favicon_url="https://fastapi.tiangolo.com/img/favicon.png", + swagger_js_url="./swagger-ui-bundle.js", + swagger_css_url="./swagger-ui.css", + ) mcp_app = FastAPI()