From 43a4a1f4585a3fdf87a50d7b21b23798d29a5ef9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=A6=82=E5=A8=81?= Date: Wed, 9 Jul 2025 00:42:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0api=E5=89=8D=E7=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/main.py b/main.py index e64783c..9fa9a81 100644 --- a/main.py +++ b/main.py @@ -43,10 +43,14 @@ app = FastAPI( title=config.APP_NAME, version=config.APP_VERSION, description="高效简洁的RAG服务API", - docs_url="/docs", - redoc_url="/redoc", + docs_url="/api/docs", + redoc_url="/api/redoc", ) +# 创建API路由器 +from fastapi import APIRouter +api_router = APIRouter(prefix="/api") + # 添加CORS中间件 app.add_middleware( CORSMiddleware, @@ -95,7 +99,7 @@ async def verify_token(credentials: HTTPAuthorizationCredentials = Depends(secur return True -@app.get("/", response_model=dict) +@api_router.get("/", response_model=dict) async def root(): """根路径 - 服务健康检查""" logger.info("根路径访问") @@ -106,14 +110,14 @@ async def root(): } -@app.get("/health") +@api_router.get("/health") async def health_check(): """健康检查接口""" logger.debug("健康检查请求") return {"status": "healthy", "service": config.APP_NAME} -@app.post("/upload", response_model=SuccessResponse) +@api_router.post("/upload", response_model=SuccessResponse) async def upload_document( file: UploadFile = File(...), service: AsyncRAGService = Depends(get_rag_service), @@ -184,7 +188,7 @@ async def upload_document( raise HTTPException(status_code=500, detail=f"文档处理失败: {str(e)}") -@app.post("/chat", response_model=ChatResponse) +@api_router.post("/chat", response_model=ChatResponse) async def chat( request: ChatRequest, service: AsyncRAGService = Depends(get_rag_service), @@ -217,7 +221,7 @@ async def chat( raise HTTPException(status_code=500, detail=f"问答处理失败: {str(e)}") -@app.post("/chat/stream") +@api_router.post("/chat/stream") async def chat_stream( request: StreamChatRequest, service: AsyncRAGService = Depends(get_rag_service), @@ -260,7 +264,7 @@ async def chat_stream( ) -@app.get("/documents", response_model=List[DocumentInfo]) +@api_router.get("/documents", response_model=List[DocumentInfo]) async def get_documents( service: AsyncRAGService = Depends(get_rag_service), _: bool = Depends(verify_token) ): @@ -284,7 +288,7 @@ async def get_documents( raise HTTPException(status_code=500, detail=f"获取文档列表失败: {str(e)}") -@app.delete("/documents/{doc_id}", response_model=SuccessResponse) +@api_router.delete("/documents/{doc_id}", response_model=SuccessResponse) async def delete_document( doc_id: str, service: AsyncRAGService = Depends(get_rag_service), @@ -320,6 +324,10 @@ async def global_exception_handler(request, exc): ) +# 包含API路由器 +app.include_router(api_router) + + if __name__ == "__main__": # 验证配置 try: