diff --git a/app/middleware.py b/app/middleware.py index 0a4d756..26a2679 100644 --- a/app/middleware.py +++ b/app/middleware.py @@ -172,11 +172,42 @@ async def http_context(request: Request, call_next): # 构造统一格式的响应 if response.status_code == 200: - result = ResponseData( - data=business_data, - result=Result(code=200, message="请求成功!", status="succeed"), - timestamp=datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"), - ) + # result = ResponseData( + # data=business_data, + # result=Result(code=200, message="请求成功!", status="succeed"), + # timestamp=datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"), + # ) + + try: + business_data = json.loads(response_body_str) + except Exception as e: + business_data = {"error": f"Unable to decode response body: {str(e)}"} + + if "code" in business_data: + message=business_data.get("message","请求失败!") + result = ResponseData( + data=None, + result=Result(code=business_data.get("code",500), message=message, status="failed"), + timestamp=datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") + ) + else: + # 构造统一格式的响应 + result = ResponseData( + data=business_data, + result=Result(code=200, message="请求成功!", status="succeed"), + timestamp=datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") + ) + response_info = { + "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), + "status_code": response.status_code, + "headers": dict(response.headers), + "body": result.model_dump(), + } + logger.info(f"{request_id} 响应: {json.dumps(response_info, separators=(',', ':'), default=str, ensure_ascii=False)}") + + # 返回修改后的响应 + return JSONResponse(content=result.model_dump()) + else: message = "请求失败!" if response.status_code == 404: