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="总页数")
|
||
|
||
|
||
|