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)

四,测试效果:

image

posted @ 2026-06-10 15:19  刘宏缔的架构森林  阅读(12)  评论(0)    收藏  举报