DRF框架统一接口返回

在使用Django REST Framework框架过程中,简单的将返回接口进行封装,接口返回规范在最后面


# 可以放在utils或者common公共文件里面
class MyResponse(object):
    """api返回的信息的封装"""

    def __init__(self):
        self.status = 200
        self.message = "请求成功"
        self.sysMsg = "success"

    @property
    def get_dict(self):
        return self.__dict__

----------------------------------------

使用:

from rest_framework.response import Response
from rest_framework.generics import GenericAPIView, ListCreateAPIView, RetrieveUpdateDestroyAPIView

from users.models import Department
from users.serializers import DepartmentSerializer
from utils.utils import MyResponse

class DepartmentGenericAPIView(GenericAPIView):
    """  GenericAPIView的视图  """
    queryset = Department.objects.all()
    serializer_class = DepartmentSerializer

    def get(self, request, pk):
        response = MyResponse()
        # 异常捕获
        try:
            queryset = self.get_queryset().get(id=pk)
        except Department.DoesNotExist:
            response.status = 100
            response.message = "未找到相应的部门"
            response.sysMsg = "error"
            return Response(response.get_dict)
        deps = self.get_serializer(instance=queryset)
        response.data = deps.data
        return Response(response.get_dict)

标准的接口格式:

 response:
----------------------------------------
{
   status: 200,               // 详见【status】

   data: {
      code: 1,                // 详见【code】
      data: {} || [],         // 数据
      message: '成功',        // 存放响应信息提示,显示给客户端用户【须语义化中文提示】
      sysMsg: 'success'       // 存放响应信息提示,调试使用,中英文都行
      ...                     // 其它参数,如 total【总记录数】等
   },

   message: '成功',            // 存放响应信息提示,显示给客户端用户【须语义化中文提示】
   sysMsg: 'success'          // 存放响应信息提示,调试使用,中英文都行
}
----------------------------------------
【status】:
           200: OK       400: Bad Request        500:Internal Server Error       
                         401:Unauthorized
                         403:Forbidden
                         404:Not Found

【code】:
         1: 获取数据成功 | 操作成功             0:获取数据失败 | 操作失败
posted @ 2021-07-20 09:20  皮皮龙喔  阅读(430)  评论(0)    收藏  举报