Files
2026-09-21 19:03:31 +08:00

34 lines
1.0 KiB
Python

"""统一响应包。
Success: {"code": 0, "msg": "ok", "data": ...}
Failure: {"code": 404, "msg": "学生不存在", "data": null}
code=0 表示成功,其余为业务错误码(与 HTTP 状态码对齐,前端可统一判断 code !== 0)。
"""
from __future__ import annotations
from typing import Any, Generic, TypeVar
from pydantic import BaseModel, Field
T = TypeVar("T")
class Resp(BaseModel, Generic[T]):
code: int = Field(0, description="0=成功,非 0=业务错误码")
msg: str = Field("ok", description="提示信息")
data: T | None = Field(None, description="业务数据")
@classmethod
def ok(cls, data: Any = None, msg: str = "ok") -> dict:
return {"code": 0, "msg": msg, "data": data}
@classmethod
def fail(cls, msg: str, code: int = 400, data: Any = None) -> dict:
return {"code": code, "msg": msg, "data": data}
def ok(data: Any = None, msg: str = "ok") -> dict:
"""最常用的写法:return ok(result)"""
return {"code": 0, "msg": msg, "data": data}