【发布时间】:2021-08-23 03:08:11
【问题描述】:
我是第一次使用 Django REST 框架开发 API。
我想知道下面哪种类型是推荐的编程实践。
在代码类型 1 中,如果未找到记录,则返回 None,这在主要检索方法中进行检查。如果在检索方法中收到 None ,我手动返回一个 404 状态的响应。如果遇到任何其他错误(包括异常),我会手动返回 500 响应。
在代码类型 2 中,如果没有找到记录,那么我提出 Http404。引发的 Http404 条件由序列化程序处理,并与消息一起发送正确的 404 响应。 我对代码类型 2 的主要关注是,如果生成任何其他异常,代码是否会崩溃(因为我们没有 try-except 块。
推荐的 API 开发设计模式是什么?
代码类型 1:
def get_object(self, ca_number):#get single customer
try:
return CustomerDetailModel.objects.get(ca_number=ca_number)
except CustomerDetailModel.DoesNotExist:
return None
def retrieve(self, request, pk=None):
try:
data =self.get_object(ca_number = pk)
if data == None: #Check if None, if true send 404 error
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = CustomerDetailSerializer(data)
return Response(serializer.data,status=status.HTTP_200_OK)
except :
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
代码类型 2:
def get_object(self, ca_number):#get single customer
try:
return CustomerDetailModel.objects.get(ca_number=ca_number)
except CustomerDetailModel.DoesNotExist:
raise Http404
def retrieve(self, request, pk=None):
data = self.get_object(ca_number = pk)
serializer = CustomerDetailSerializer(data)
return Response(serializer.data,status=status.HTTP_200_OK)
【问题讨论】: