55 lines
1.6 KiB
Python
55 lines
1.6 KiB
Python
|
"""
|
|||
|
基础API模型模块
|
|||
|
包含通用的API请求和响应的数据模型
|
|||
|
"""
|
|||
|
|
|||
|
from typing import Optional, Any, Generic, TypeVar, Dict, List
|
|||
|
from pydantic import BaseModel, Field
|
|||
|
|
|||
|
# 定义泛型类型变量
|
|||
|
T = TypeVar('T')
|
|||
|
|
|||
|
class ApiResponse(BaseModel, Generic[T]):
|
|||
|
"""
|
|||
|
标准API响应模型
|
|||
|
适用于所有API响应
|
|||
|
|
|||
|
Args:
|
|||
|
code: 状态码
|
|||
|
message: 响应消息
|
|||
|
data: 响应数据
|
|||
|
"""
|
|||
|
code: int = Field(200, description="状态码,200表示成功")
|
|||
|
message: str = Field("操作成功", description="响应消息")
|
|||
|
data: Optional[T] = Field(None, description="响应数据")
|
|||
|
|
|||
|
class PaginationParams(BaseModel):
|
|||
|
"""
|
|||
|
分页查询参数
|
|||
|
适用于所有需要分页的接口
|
|||
|
"""
|
|||
|
pageNum: int = Field(1, ge=1, description="页码,默认为1")
|
|||
|
pageSize: int = Field(10, ge=1, le=100, description="每页记录数,默认为10")
|
|||
|
|
|||
|
class SortParams(BaseModel):
|
|||
|
"""
|
|||
|
排序参数
|
|||
|
适用于所有需要排序的接口
|
|||
|
"""
|
|||
|
sortField: Optional[str] = Field(None, description="排序字段")
|
|||
|
sortOrder: str = Field("desc", description="排序方式:asc(升序)、desc(降序)")
|
|||
|
|
|||
|
class PageResult(BaseModel, Generic[T]):
|
|||
|
"""
|
|||
|
分页结果模型
|
|||
|
适用于所有返回分页数据的接口
|
|||
|
"""
|
|||
|
total: int = Field(..., description="总记录数")
|
|||
|
list: List[T] = Field(..., description="数据列表")
|
|||
|
pageNum: int = Field(..., description="当前页码")
|
|||
|
pageSize: int = Field(..., description="每页记录数")
|
|||
|
totalPages: int = Field(..., description="总页数")
|
|||
|
|
|||
|
|
|||
|
|