django写接口状态码封装,有更好的方案?
import jsonfrom 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}))
回答:
import jsonfrom 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()
方法即可。
以上是 django写接口状态码封装,有更好的方案? 的全部内容, 来源链接: utcz.com/p/939061.html