from fastapi import APIRouter, Request, Depends, HTTPException from fastapi.responses import JSONResponse from typing import Dict, Any, Optional from datetime import datetime from config.error_messages import HTTP_ERROR_MESSAGES, BUSINESS_ERROR_MESSAGES import logging # 设置日志 logger = logging.getLogger("app.api") router = APIRouter( prefix="/api/common", tags=["通用接口"] ) @router.get("/health") async def health_check(): """健康检查接口""" return { "status": "ok", "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "message": "系统运行正常" } @router.get("/error-codes") async def get_error_codes(): """获取系统定义的错误码说明""" return { "http_errors": HTTP_ERROR_MESSAGES, "business_errors": BUSINESS_ERROR_MESSAGES } # 通用响应格式化函数 def format_response(data: Any = None, message: str = "操作成功", code: int = 200) -> Dict: """ 统一API响应格式 Args: data: 响应数据 message: 响应消息 code: 响应码 Returns: 统一格式的响应字典 """ return { "code": code, "message": message, "data": data } # 通用错误响应 def error_response(message: str, code: int = 400, data: Optional[Any] = None) -> JSONResponse: """ 统一错误响应格式 Args: message: 错误消息 code: 错误码 data: 错误详情数据 Returns: JSONResponse对象 """ return JSONResponse( status_code=code, content=format_response(data=data, message=message, code=code) )