12345678910111213141516171819202122232425262728293031323334 |
- from fastapi import FastAPI, Request, Response
- from pydantic import BaseModel
- from starlette.middleware.base import BaseHTTPMiddleware
- from starlette.responses import StreamingResponse, JSONResponse
- from typing import Any, Optional,List
- import json
- class ResponseModel(BaseModel):
- code: int
- message: str
- data: Any = None # 使用Optional[Any]也是可以的
- class StandardResponse(BaseModel):
- success: bool
- error_code: Optional[int] = None
- error_msg: Optional[str] = None
- records: Optional[Any] = None
- # class ResponseFormatterMiddleware(BaseHTTPMiddleware):
- # async def dispatch(self, request: Request, call_next):
- # response = await call_next(request)
-
- # if response.status_code >= 200 and response.status_code < 300:
- # try:
- # response_body = response.body.decode('utf-8')
- # response_data = {"code": SUCCESS_CODE, "message": SUCCESS_MESSAGE, "data": response_body}
- # response.body = str(response_data).encode('utf-8') # 注意这里需要根据实际情况调整
- # response.media_type = 'application/json'
- # except Exception as e:
- # print(f"Error formatting response: {e}")
-
- # return response
|