perf: Add API documentation toggle control

This commit is contained in:
fit2cloud-chenyw
2026-06-24 09:59:39 +08:00
committed by fit2cloud-chenyw
parent 936bb5d390
commit dc2b0788f4
2 changed files with 20 additions and 17 deletions
+2
View File
@@ -75,6 +75,8 @@ class Settings(BaseSettings):
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
+18 -17
View File
@@ -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)
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",
)
@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()