1. 程式人生 > 其它 >DRF框架統一介面返回

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:獲取資料失敗 | 操作失敗