代码上传
This commit is contained in:
185
hertz_studio_django_utils/responses/HertzResponse.py
Normal file
185
hertz_studio_django_utils/responses/HertzResponse.py
Normal file
@@ -0,0 +1,185 @@
|
||||
from django.http import JsonResponse
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
|
||||
class HertzResponse:
|
||||
"""
|
||||
Hertz统一响应类
|
||||
提供标准化的API响应格式
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def success(data: Any = None, message: str = "操作成功", code: int = 200) -> JsonResponse:
|
||||
"""
|
||||
成功响应
|
||||
|
||||
Args:
|
||||
data: 响应数据
|
||||
message: 响应消息
|
||||
code: HTTP状态码
|
||||
|
||||
Returns:
|
||||
JsonResponse: 标准化的成功响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': True,
|
||||
'code': code,
|
||||
'message': message,
|
||||
'data': data
|
||||
}
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
@staticmethod
|
||||
def fail(message: str = "操作失败", data: Any = None, code: int = 400) -> JsonResponse:
|
||||
"""
|
||||
失败响应(业务逻辑失败)
|
||||
|
||||
Args:
|
||||
message: 失败消息
|
||||
data: 响应数据
|
||||
code: HTTP状态码
|
||||
|
||||
Returns:
|
||||
JsonResponse: 标准化的失败响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': False,
|
||||
'code': code,
|
||||
'message': message,
|
||||
'data': data
|
||||
}
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
@staticmethod
|
||||
def error(message: str = "系统错误", error: str = None, code: int = 500) -> JsonResponse:
|
||||
"""
|
||||
错误响应(系统错误)
|
||||
|
||||
Args:
|
||||
message: 错误消息
|
||||
error: 详细错误信息
|
||||
code: HTTP状态码
|
||||
|
||||
Returns:
|
||||
JsonResponse: 标准化的错误响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': False,
|
||||
'code': code,
|
||||
'message': message
|
||||
}
|
||||
|
||||
if error:
|
||||
response_data['error'] = error
|
||||
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
@staticmethod
|
||||
def unauthorized(message: str = "未授权访问", code: int = 401) -> JsonResponse:
|
||||
"""
|
||||
未授权响应
|
||||
|
||||
Args:
|
||||
message: 响应消息
|
||||
code: HTTP状态码
|
||||
|
||||
Returns:
|
||||
JsonResponse: 标准化的未授权响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': False,
|
||||
'code': code,
|
||||
'message': message
|
||||
}
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
@staticmethod
|
||||
def forbidden(message: str = "禁止访问", code: int = 403) -> JsonResponse:
|
||||
"""
|
||||
禁止访问响应
|
||||
|
||||
Args:
|
||||
message: 响应消息
|
||||
code: HTTP状态码
|
||||
|
||||
Returns:
|
||||
JsonResponse: 标准化的禁止访问响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': False,
|
||||
'code': code,
|
||||
'message': message
|
||||
}
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
@staticmethod
|
||||
def not_found(message: str = "资源未找到", code: int = 404) -> JsonResponse:
|
||||
"""
|
||||
资源未找到响应
|
||||
|
||||
Args:
|
||||
message: 响应消息
|
||||
code: HTTP状态码
|
||||
|
||||
Returns:
|
||||
JsonResponse: 标准化的资源未找到响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': False,
|
||||
'code': code,
|
||||
'message': message
|
||||
}
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
@staticmethod
|
||||
def validation_error(message: str = "参数验证失败", errors: Dict = None, code: int = 422) -> JsonResponse:
|
||||
"""
|
||||
参数验证错误响应
|
||||
|
||||
Args:
|
||||
message: 响应消息
|
||||
errors: 验证错误详情
|
||||
code: HTTP状态码
|
||||
|
||||
Returns:
|
||||
JsonResponse: 标准化的参数验证错误响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': False,
|
||||
'code': code,
|
||||
'message': message
|
||||
}
|
||||
|
||||
if errors:
|
||||
response_data['errors'] = errors
|
||||
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
|
||||
@staticmethod
|
||||
def custom(success: bool, message: str, data: Any = None, code: int = 200, **kwargs) -> JsonResponse:
|
||||
"""
|
||||
自定义响应
|
||||
|
||||
Args:
|
||||
success: 是否成功
|
||||
message: 响应消息
|
||||
data: 响应数据
|
||||
code: HTTP状态码
|
||||
**kwargs: 其他自定义字段
|
||||
|
||||
Returns:
|
||||
JsonResponse: 自定义响应
|
||||
"""
|
||||
response_data = {
|
||||
'success': success,
|
||||
'code': code,
|
||||
'message': message
|
||||
}
|
||||
|
||||
if data is not None:
|
||||
response_data['data'] = data
|
||||
|
||||
# 添加其他自定义字段
|
||||
response_data.update(kwargs)
|
||||
|
||||
return JsonResponse(response_data, status=code, json_dumps_params={'ensure_ascii': False})
|
||||
Reference in New Issue
Block a user