PMFlow/backend/app/core/response.py

69 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
统一 API 响应格式
遵循 AGENTS.md 规范:
成功:{ "code": 0, "message": "success", "data": {} }
失败:{ "code": 非0错误码, "message": "错误描述", "data": null }
"""
from typing import Any, Generic, TypeVar
from pydantic import BaseModel, Field
T = TypeVar("T")
class ApiResponse(BaseModel, Generic[T]):
"""统一 API 响应模型"""
code: int = Field(description="状态码,0 表示成功")
message: str = Field(description="描述信息")
data: T | None = Field(default=None, description="响应数据,失败时为 null")
def success_response(data: Any = None, message: str = "success") -> dict:
"""
构建成功响应
Args:
data: 响应数据,可为任意 JSON 可序列化类型
message: 成功描述
Returns:
符合规范的响应字典
"""
return {
"code": 0,
"message": message,
"data": data,
}
def error_response(code: int, message: str) -> dict:
"""
构建失败响应
Args:
code: 非零错误码
message: 错误描述
Returns:
符合规范的响应字典
"""
return {
"code": code,
"message": message,
"data": None,
}
# 常用错误码
class ErrorCode:
"""错误码常量"""
UNAUTHORIZED = 401
FORBIDDEN = 403
NOT_FOUND = 404
VALIDATION_ERROR = 422
INTERNAL_ERROR = 500