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

1. 直接抛内置异常

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

from ninja.errors import HttpError

@api.get("/some/resource")
def some_operation(request):
    if True:
        raise HttpError(503, "Service Unavailable. Please retry later.")

2.  覆写异常类

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

from ninja.errors import ValidationError
...

@api.exception_handler(ValidationError)
def validation_errors(request, exc):
    return HttpResponse("Invalid input", status=422)

3. 自定义异常类

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

要实现这一点,你需要:

  1. 自定义一个ServiceUnavailableError
  2. 使用 api.exception_handler 为ServiceUnavailableError异常添加一个处理函数
api = NinjaAPI()

class ServiceUnavailableError(Exception):
    pass


# initializing handler

@api.exception_handler(ServiceUnavailableError)
def service_unavailable(request, exc):
    return api.create_response(
        request,
        {"message": "Please retry later"},
        status=503,
    )


# some logic that throws exception

@api.get("/service")
def some_operation(request):
    if random.choice([True, False]):
        raise ServiceUnavailableError()
    return {"message": "Hello"}

相关推荐

  1. Django-ninjadjango ninja处理异常

    2024-02-05 08:06:03       41 阅读
  2. Django-ninjadjango-ninja的hello world

    2024-02-05 08:06:03       46 阅读
  3. 如何Python处理异常

    2024-02-05 08:06:03       29 阅读
  4. Django-ninja】使用schema

    2024-02-05 08:06:03       51 阅读
  5. Django-ninja】使用Django ninja 进行auth鉴权

    2024-02-05 08:06:03       42 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-05 08:06:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-05 08:06:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-05 08:06:03       82 阅读
  4. Python语言-面向对象

    2024-02-05 08:06:03       91 阅读

热门阅读

  1. aspose-words在linux上安装字体

    2024-02-05 08:06:03       49 阅读
  2. 3031. Minimum Time to Revert Word to Initial State II

    2024-02-05 08:06:03       54 阅读
  3. linux系统lvs负载均衡和四种工作模式

    2024-02-05 08:06:03       51 阅读
  4. flask的基本使用 token插件(二)

    2024-02-05 08:06:03       48 阅读
  5. Docker 的常用命令

    2024-02-05 08:06:03       51 阅读
  6. docker使用总结

    2024-02-05 08:06:03       53 阅读