response.py 1.3 KB

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