当前位置:   article > 正文

【Django-ninja】在django ninja中处理异常_django ninja 异常处理

django ninja 异常处理

1. 直接抛内置异常

Django ninja内置了一些常用异常类。

  1. from ninja.errors import HttpError
  2. @api.get("/some/resource")
  3. def some_operation(request):
  4. if True:
  5. raise HttpError(503, "Service Unavailable. Please retry later.")

2.  覆写异常类

可以覆写内置异常类的handler,改变返回结果的内容。

  1. from ninja.errors import ValidationError
  2. ...
  3. @api.exception_handler(ValidationError)
  4. def validation_errors(request, exc):
  5. return HttpResponse("Invalid input", status=422)

3. 自定义异常类

以创建一个500服务不可用异常类为例。

要实现这一点,你需要:

  1. 自定义一个ServiceUnavailableError
  2. 使用 api.exception_handler 为ServiceUnavailableError异常添加一个处理函数
  1. api = NinjaAPI()
  2. class ServiceUnavailableError(Exception):
  3. pass
  4. # initializing handler
  5. @api.exception_handler(ServiceUnavailableError)
  6. def service_unavailable(request, exc):
  7. return api.create_response(
  8. request,
  9. {"message": "Please retry later"},
  10. status=503,
  11. )
  12. # some logic that throws exception
  13. @api.get("/service")
  14. def some_operation(request):
  15. if random.choice([True, False]):
  16. raise ServiceUnavailableError()
  17. return {"message": "Hello"}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/80600
推荐阅读
相关标签
  

闽ICP备14008679号