FastAPI 统一响应json数据格式

作者 夜狼荼 2021年04月15日 09:47 阅读 1137

统一响应json数据格式

响应json格式

{
 "code": 200,
 "data": xxx,
 "message": "success"
}

封装响应格式

from fastapi import status
from fastapi.responses import JSONResponse, Response  # , ORJSONResponse
from typing import Union

# 注意有个 * 号 不是笔误, 意思是调用的时候要指定参数 e.g.resp_200(data=xxxx)
def resp_200(*, data: Union[list, dict, str]) -> Response:
    return JSONResponse(
        status_code=status.HTTP_200_OK,
        content={
            'code': 200,
            'message': "Success",
            'data': data,
        }
    )

def resp_400(*, data: str = None, message: str="BAD REQUEST") -> Response:
    return JSONResponse(
        status_code=status.HTTP_400_BAD_REQUEST,
        content={
            'code': 400,
            'message': message,
            'data': data,
        }
    )

# 所有响应状态都封装在这里
xxxx

调用方法

from api.utils import response_code

@router.get("/table/list")
async def get_table_list():
    return response_code.resp_200(data={
    "items":  ["xx", "xx"]
    })

补充说明

可用 ORJSONResponse UJSONResponse替换 JSONResponse ,貌似json解析更快。

发表评论