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

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}))


回答:

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()方法即可。

以上是 django写接口状态码封装,有更好的方案? 的全部内容, 来源链接: utcz.com/p/939061.html

回到顶部