nex_docus/backend/app/schemas/response.py

43 lines
1.2 KiB
Python

"""
通用响应 Schema
"""
from pydantic import BaseModel, Field
from typing import Generic, TypeVar, Optional, Any
DataT = TypeVar('DataT')
class Response(BaseModel, Generic[DataT]):
"""统一响应格式"""
code: int = Field(200, description="状态码")
message: str = Field("success", description="响应消息")
data: Optional[DataT] = Field(None, description="响应数据")
class PageResponse(BaseModel, Generic[DataT]):
"""分页响应格式"""
code: int = Field(200, description="状态码")
message: str = Field("success", description="响应消息")
data: Optional[DataT] = Field(None, description="响应数据列表")
total: int = Field(0, description="总记录数")
page: int = Field(1, description="当前页码")
page_size: int = Field(10, description="每页大小")
def success_response(data: Any = None, message: str = "success") -> dict:
"""成功响应"""
return {
"code": 200,
"message": message,
"data": data
}
def error_response(message: str = "error", code: int = 400, data: Any = None) -> dict:
"""错误响应"""
return {
"code": code,
"message": message,
"data": data
}