diff --git a/src/backend/app/__init__.py b/src/backend/app/__init__.py index 3963a5e..55b9b05 100644 --- a/src/backend/app/__init__.py +++ b/src/backend/app/__init__.py @@ -1,11 +1,8 @@ -from fastapi import FastAPI +from fastapi import FastAPI, responses from src.backend.app.api.endpoints import router from src.backend.app.utils.logger import setup_logging from src.backend.config import settings -app = FastAPI() -app.include_router(router,prefix="/api") - def create_app() -> FastAPI: # 设置日志 setup_logging() @@ -19,7 +16,20 @@ def create_app() -> FastAPI: openapi_url=f"{settings.API_PREFIX}/openapi.json" ) + # 添加根路径重定向 + @app.get("/", include_in_schema=False) + async def root(): + return responses.RedirectResponse(url=f"{settings.API_PREFIX}/docs") + + # 添加favicon处理 + @app.get("/favicon.ico", include_in_schema=False) + async def favicon(): + return responses.Response(status_code=204) + # 添加API路由 app.include_router(router, prefix=settings.API_PREFIX) - return app \ No newline at end of file + + + return app +app = create_app() \ No newline at end of file diff --git a/src/backend/app/api/endpoints.py b/src/backend/app/api/endpoints.py index f812243..8e77b5d 100644 --- a/src/backend/app/api/endpoints.py +++ b/src/backend/app/api/endpoints.py @@ -1,4 +1,4 @@ -from fastapi import (APIRouter, HTTPException) +from fastapi import (APIRouter, HTTPException, Response) from typing import List from pydantic import BaseModel @@ -10,6 +10,27 @@ from ..services.network_scanner import NetworkScanner router = APIRouter(prefix="/api", tags=["API"]) scanner = NetworkScanner() +# 添加根路径路由 +@router.get("/", include_in_schema=False) +async def root(): + return { + "message": "欢迎使用AI交换机配置系统", + "docs": f"{settings.API_PREFIX}/docs", + "redoc": f"{settings.API_PREFIX}/redoc", + "endpoints": [ + "/parse_command", + "/apply_config", + "/scan_network", + "/list_devices", + "/batch_apply_config" + ] + } + +# 添加favicon处理 +@router.get("/favicon.ico", include_in_schema=False) +async def favicon(): + return Response(status_code=204) + class BatchConfigRequest(BaseModel): config: dict switch_ips: List[str] # 支持多个IP @@ -20,11 +41,13 @@ async def batch_apply_config(request: BatchConfigRequest): for ip in request.switch_ips: try: configurator = SwitchConfigurator() - results[ip] = await configurator.safe_apply(ip, request.config) + results[ip] = await configurator.apply_config(ip, request.config) except Exception as e: results[ip] = str(e) return {"results": results} + + @router.get("/test") async def test_endpoint(): return {"message": "Hello World"} diff --git a/src/backend/run.py b/src/backend/run.py index 7697a5d..4dd46ad 100644 --- a/src/backend/run.py +++ b/src/backend/run.py @@ -1,11 +1,8 @@ import uvicorn -from src.backend.app import create_app - -app = create_app() if __name__ == "__main__": uvicorn.run( - "src.backend.app:app", + "src.backend.app:app", # 使用字符串引用方式 host="0.0.0.0", port=8000, log_level="info",