http_config.py 1.25 KB
from fastapi.middleware.cors import CORSMiddleware
from starlette.responses import JSONResponse
from embedding_sever.api.http_log import LoggingMiddleware
from fastapi import FastAPI
from embedding_sever.api.router import api_router
from embedding_sever.config import settings


def config_fastapi(fastapi_app: FastAPI):
    # 配置请求/响应日志中间件(需在CORS之前添加)
    fastapi_app.add_middleware(LoggingMiddleware)

    # 配置CORS
    fastapi_app.add_middleware(
        CORSMiddleware,
        allow_origins=["*"],
        allow_credentials=True,
        allow_methods=["*"],
        allow_headers=["*"],
    )

    # 注册路由
    fastapi_app.include_router(api_router)

    @fastapi_app.exception_handler(Exception)
    async def generic_exception_handler(request, exc: Exception):
        # 返回自定义的错误响应
        error_detail = str(exc)
        return JSONResponse(
            status_code=200,
            content={"code": "error", "message": error_detail},
        )

    @fastapi_app.get("/", tags=["根路径"])
    async def root():
        """根路径."""
        return {
            "name": settings.app_name,
            "version": settings.app_version,
            "docs": "/docs",
        }

    return fastapi_app