当前位置: 首页 > article >正文

【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"}


http://www.kler.cn/a/232070.html

相关文章:

  • vue之axios根据某个接口创建实例,并设置headers和超时时间,捕捉异常
  • 【linux学习指南】VSCode部署Ubantu云服务器,与Xshell进行本地通信文件编写
  • Vue学习记录03
  • pytest在conftest.py中实现用例执行失败进行截图并附到allure测试报告
  • thinkphp6配置多应用项目及多域名访问路由app配置
  • MySQL【五】
  • Java代码实现基数排序算法(附带源码)
  • 计算机设计大赛 深度学习 机器视觉 人脸识别系统 - opencv python
  • TCP 传输控制协议
  • JenkinsGitLab完成自动化构建部署
  • 2024.2.6
  • 二叉树中的最大路径和
  • mysql学习打卡day22
  • 20240204金融读报1分钟小得
  • 23种设计模式之单例模式
  • Java+微信小程序实现智慧家政系统 JAVA+Vue+SpringBoot+MySQL
  • JVM体系
  • automative
  • 阿里云游戏服务器多少钱一个月?
  • Netty的常用组件及线程模型设计(一)
  • Redis(02)——事务管理
  • 摘录笔记——2024年2月5日
  • 【RPA】浅谈RPA技术及其应用
  • 设计模式2-对象池模式
  • 机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节)
  • epoll 系列系统调用(I/O复用函数)