[1,119 | Day62 비정상적인 모듈 DRF

먼저, 이상 모듈

모듈 객체를 재 작성 (광고 항목) 이상 이상 기록 정보이다.

두 구체적 배치

分析:

  1. EXCEPTION_HANDLER DRF는 구성 설정에 배열 함수 포인트 지정 exception_handler

  2. 이상 DRF 및 콜백 함수 exception_handler 것, 콘텐츠 관련 이상 특이 물체를 운반
  3. 반환 exception_handler 기능 완전한 예외 메시지 및 예외 정보 로깅 로그에

例如:

#settings.py

REST_FRAMEWORK = {

    # 异常模块
    # 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
    
    'EXCEPTION_HANDLER': 'api.utils.exception_handler',
}
#api/utils.py(自定义模块)

from rest_framework.response import Response
from rest_framework.views import exception_handler as drf_exception_handler
from rest_framework import status


def exception_handler(exc, context):
    response = drf_exception_handler(exc, context)

    if response is None:  # drf没有处理的异常(服务器异常)
        return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR, data={
            'status': 7,
            'exc': '%s' % exc
        })

    # 项目阶段,要记录到日志文件
    return Response(status=response.status_code, data={
        'status': 7,
        # drf处理的客户端异常,原始处理方式是将异常信息放在response对象的data中,data的格式是{'datail': '具体的异常信息'}
        'exc': '%s' % response.data.get('detail')
    })

核心:

사용자 정의 할 수 있도록 예외 정보 요구 로깅, 기록한다.

클라이언트 만 이상 처리 DRF, 비정상적인 서버는 수동 취급, 균일 한 처리 결과를 필요로한다.

추천

출처www.cnblogs.com/fxyadela/p/11892355.html