| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- from typing import Any, Optional
- from fastapi import status
- from fastapi.encoders import jsonable_encoder
- from fastapi.responses import JSONResponse, Response, StreamingResponse
- from core.constant import HttpStatusConstant
- class ResponseUtil:
- """
- 响应工具类
- """
- @classmethod
- def response(
- cls,
- success: bool = True,
- code: int = HttpStatusConstant.SUCCESS,
- msg: str = "操作成功",
- data: Optional[Any] = None,
- ):
- result = {
- "success": success,
- "code": code,
- "message": msg,
- "data": data,
- }
- return JSONResponse(
- status_code=status.HTTP_200_OK, content=jsonable_encoder(result)
- )
- @classmethod
- def success(cls, data: Optional[Any] = None, msg: str = None) -> Response:
- return cls.response(msg=msg if msg else "操作成功", data=data)
- @classmethod
- def failure(
- cls,
- msg: str = None,
- data: Optional[Any] = None,
- code: int = HttpStatusConstant.WARN,
- ) -> Response:
- return cls.response(False, code, msg if msg else "操作失败", data)
- @classmethod
- def unauthorized(
- cls,
- msg: str = None,
- data: Optional[Any] = None,
- ) -> Response:
- return cls.failure(
- msg if msg else "登录信息已过期,访问系统资源失败",
- data,
- HttpStatusConstant.UNAUTHORIZED,
- )
- @classmethod
- def forbidden(
- cls,
- msg: str = None,
- data: Optional[Any] = None,
- ) -> Response:
- return cls.failure(
- msg if msg else "没有权限,访问系统资源失败",
- data,
- HttpStatusConstant.FORBIDDEN,
- )
- @classmethod
- def error(
- cls,
- msg: str = None,
- data: Optional[Any] = None,
- ) -> Response:
- return cls.failure(
- msg if msg else "系统服务异常", data, HttpStatusConstant.ERROR
- )
- @classmethod
- def not_found(cls, path: Optional[str] = None) -> Response:
- return cls.failure(
- f"[{path}]资源不存在" if path else "资源不存在",
- code=HttpStatusConstant.NOT_FOUND,
- )
- @classmethod
- def streaming(cls, *, data: Any = None):
- """
- 流式响应方法
- :param data: 流式传输的内容
- :return: 流式响应结果
- """
- return StreamingResponse(status_code=status.HTTP_200_OK, content=data)
- @classmethod
- def json(cls, data: Any = None):
- """
- JSON响应方法
- :param data: JSON响应的内容
- :return: JSON响应结果
- """
- return JSONResponse(status_code=status.HTTP_200_OK, content=data)
|