django写接口状态码封装,有更好的方案?

import json
from enum import Enum


class Status(Enum):
    SUCCESS = (200000, 'success')
    NO_AUTH = (300001, 'No authorization!')


class Utils:

    @staticmethod
    def json_dumps(res: Status, data):
        return json.dumps({'code': res.value[0], 'data': data, 'info': res.value[0]})


print(Utils.json_dumps(Status.SUCCESS, {'age': 100}))
阅读 853
1 个回答
import json

from enum import Enum
from dataclasses import dataclass, asdict
from typing import Any


@dataclass
class StatusItem:
    code: int
    msg: str


class Status(Enum):
    SUCCESS = StatusItem(200000, "success")
    NO_AUTH = StatusItem(300001, "No authorization!")


class EnumEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Status):
            return asdict(obj.value)

        return json.JSONEncoder.default(self, obj)


@dataclass
class Response:
    status: Status
    data: Any

    def json(self) -> str:
        return json.dumps(asdict(self), cls=EnumEncoder)


print(Response(Status.SUCCESS, {"age": 100}).json())

之后的所有响应都直接调用json()方法即可。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题