如果发生错误,我希望在将响应发送回客户端时发送error_codes
!!
所以,我有一个表格,其中需要参数a
和b
。如果任何参数未被POST,则DRF序列化程序发回一个响应,说This field is required.
我想将错误代码添加到响应中以供客户端识别。不同的错误不同的错误代码。
所以,我编写了自己的自定义异常处理程序。它是这样的。
response = exception_handler(exc, context)
if response is not None:
error = {
'error_code': error_code, # Need to identify the error code, based on the type of fail response.
'errors': response.data
}
return Response(error, status=http_code)
return response
我面临的问题是我需要识别收到的异常类型,以便我可以相应地发送error_code。我怎样才能做到这一点?
答案 0 :(得分:1)
REST框架的视图处理各种异常,并处理返回适当的错误响应。
处理的例外情况是:
您可以识别状态
收到的例外类型from rest_framework import exceptions, status
response = exception_handler(exc, context)
if response is not None:
if response.status == status.HTTP_404_NOT_FOUND:
# Django's Http404
elif response.status == status.HTTP_403_FORBIDDEN:
# PermissionDenied exception
else:
# APIException raised
此外,大多数错误响应都会在响应正文中包含一个键详细信息。
您可以检查并设置自定义错误代码。
response = exception_handler(exc, context)
if response is not None:
# identify the type of exception received, detail can be text, list or dictionary of items.
if response.data.detail == 'some text':
error_code = 111
elif more_conditions:
...
参考:http://www.django-rest-framework.org/api-guide/exceptions/