fastapi:第七章: 使用统一的响应数据格式
一,常用的格式:
{
"code": 200, // 统一成功状态码 前后端约定 有的是0 有的是20000
"data": xxx, // 可以是任意类型数据 有接口文档对接
"message": "success" // 消息提示,是状态码的简要补充说明
}
二,定义格式
定义格式
# app/utils/BaseResponse.py
from typing import Generic, TypeVar, Any
from pydantic import BaseModel
# 定义泛型,用于支持不同的 data 内容
T = TypeVar("T")
class BaseResponse(BaseModel, Generic[T]):
code: int = 200 # 业务状态码 (非 HTTP 状态码)
msg: str = "success" # 提示信息
data: T | None = None # 核心数据
定义返回成功和失败的两个方法
# app/utils/response.py
from typing import Any
from app.utils.BaseResponse import BaseResponse
def success(data: Any = None, msg: str = "success", code: int = 200) -> dict:
"""成功返回的快捷对象"""
return BaseResponse(code=code, msg=msg, data=data).model_dump()
def fail(msg: str = "fail", code: int = 400, data: Any = None) -> dict:
"""失败返回的快捷对象"""
return BaseResponse(code=code, msg=msg, data=data).model_dump()
三,调用
# routers/products.py
from fastapi import APIRouter
from app.utils.response import success
router = APIRouter(prefix="/products", tags=["商品管理"])
@router.get("/all")
def get_all_products():
products = [{"id": 1, "name": "手机"}, {"id": 2, "name": "电脑"}]
return success(data=products)
四,测试效果:

浙公网安备 33010602011771号