对于第一个请求示例:我会将valid_dog中的错误返回给控制器,以便在响应中显示它将引发400 Bad Request状态代码。
对于第二个请求示例:我会将空查询返回给控制器,该控制器将引发404 Not Found状态代码。
对于第三个请求示例:我将通过提出424 FAILED DEPENDENCY状态代码或503 SERVICE UNAVAILABLE来解决问题,从而在控制器中处理异常。
例如为django rest框架设置自定义异常:from django.utils.encoding import force_text
from rest_framework.exceptions import APIException
class ServiceUnavailable(APIException):
"""
Raise error for external services that cannot be reached
"""
status_code = 503
default_detail = "Service temporarily unavailable, try again later."
default_code = "service_unavailable"
def __init__(self, detail, field):
if detail is not None:
self.detail = {field: [force_text(detail)]}
else:
self.detail = {"detail": force_text(self.default_detail)}