# -*- coding: utf-8 -*- """响应工具:与 Flask 侧 APIResponse 的 JSON 契约逐字段对齐。 Flask 的 APIResponse.success/error 返回 (dict, status) 元组,由 Flask 序列化。 FastAPI 侧改为直接返回 JSONResponse,但**包体结构完全一致**: success: {"status": sc, "success": true, "message": msg, ["data": ...]} error: {"status": sc, "success": false, "message": msg, ["error_code": ...]} 这样前端无需任何改动即可同时对接两个框架。 """ from typing import Any from fastapi.responses import JSONResponse def success(data: Any = None, message: str = 'success', status_code: int = 200) -> JSONResponse: """成功响应(对应 Flask APIResponse.success)""" body = { 'status': status_code, 'success': True, 'message': message, } if data is not None: body['data'] = data return JSONResponse(content=body, status_code=status_code) def error(message: str, status_code: int = 400, error_code: str | None = None) -> JSONResponse: """错误响应(对应 Flask APIResponse.error)""" body = { 'status': status_code, 'success': False, 'message': message, } if error_code: body['error_code'] = error_code return JSONResponse(content=body, status_code=status_code)