43 lines
1.2 KiB
Python
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
|
|
}
|