monitoring/utils/response.py

44 lines
1.7 KiB
Python

# _*_ coding: utf-8 _*_
# @Time :2022/5/29 11:39
# @Email :508737091@qq.com
# @Author :qiangyanwen
# @File :response.py
from dataclasses import make_dataclass
from typing import Union
from fastapi.responses import JSONResponse
from fastapi import status
from .jsonable_encoder import jsonable_encoder
def success_200(data: Union[list, dict, str] = None, code: int = 200, message: str = "Success") -> JSONResponse:
return response_base(status.HTTP_200_OK, data, code, message).Success()
def error_211(data: Union[list, dict, str] = None, code: int = 211, message: str = "error") -> JSONResponse:
return response_base(status.HTTP_200_OK, data, code, message).Success()
def error_400(data: Union[list, dict, str] = None, code: int = 400, message: str = "请求失败") -> JSONResponse:
return response_base(status.HTTP_400_BAD_REQUEST, data, code, message).Success()
def error_403(data: Union[list, dict, str] = None, code: int = 403, message: str = "Token 认证失败") -> JSONResponse:
return response_base(status.HTTP_403_FORBIDDEN, data, code, message).Success()
def error_500(data: Union[list, dict, str] = None, code: int = 500,
message: str = "Internal Server Error") -> JSONResponse:
return response_base(status.HTTP_500_INTERNAL_SERVER_ERROR, data, code, message).Success()
response_base = make_dataclass(
"response_base",
[('http_status', int, None), ('data', Union[list, dict, str], None), ('code', int, None), ('message', str, None)],
namespace={
"Success": lambda self: JSONResponse(
status_code=self.http_status,
content=jsonable_encoder({'code': self.code, 'message': self.message, 'data': self.data})
)
}
)