# _*_ 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}) ) } )