RESTful异常处理
发布时间:2023-12-25 05:01:41 所属栏目:教程 来源:DaWei
导读: “圣人千虑,必有一失”,程序也是如此。当 RESTful Web API 服务器发生异常,该如何处理呢?构建好的 RESTful Web API,客户端开发人员又该如何调用呢?这一节,我们就为大家一一
“圣人千虑,必有一失”,程序也是如此。当 RESTful Web API 服务器发生异常,该如何处理呢?构建好的 RESTful Web API,客户端开发人员又该如何调用呢?这一节,我们就为大家一一道来。 1.异常处理 当遇到异常时,Django Rest framework 会自动捕获,并按默认逻辑处理。我们也可以通过自定义异常处理函数来实现对异常的处理。 from rest_framework.views import exception_handler def custom_exception_handler(exc, context): # 先调用REST framework默认的异常处理方法获得标准错误响应对象 response = exception_handler(exc, context) # 在此处补充自定义的异常处理 if response is not None: response.data['status_code'] = response.status_code return response 在配置文件中声明自定义的异常处理 REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'my_project.my_app.utils.custom_exception_handler' } 如果未声明,会采用默认的方式,如下 REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler' } 例如: 补充上处理关于数据库的异常 from rest_framework.views import exception_handler as drf_exception_handler from rest_framework import status from django.db import DatabaseError def exception_handler(exc, context): response = drf_exception_handler(exc, context) if response is None: view = context['view'] if isinstance(exc, DatabaseError): print('[%s]: %s' % (view, exc)) response = Response({'detail': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE) return response 2.REST framework 提供的异常类 APIException 所有异常的父类; ParseError 解析错误; AuthenticationFailed 认证失败; NotAuthenticated 尚未认证; PermissionDenied 权限决绝; NotFound 未找到; MethodNotAllowed 请求方式不支持; NotAcceptable 要获取的数据格式不支持; Throttled 超过限流次数; ValidationError 校验失败。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐