NestJS에서 HTTP 예외를 사용자 정의하는 방법

프로젝트가 도래할 수 있는 기회를 얻을 수 있었고, 그 척척척척척척척척척척척척척척척양양폐된상태에들어가도발견할수있었어요.

우리의 예상대로 하면, 우리의 예상대로라면 Front-end 우리의 예상대로 옳지 않다고 생각하고 있습니다 전하세요.

현재 게시물에 대한 답변 항목은 다음과 같습니다. 그러면 다음과 같은 형식으로 발생합니다.

{
  "status" : 401, // Http Status Code
  "code" : "UNAUTHORIZED_USER" // string Response code
  "error" : true // is error occurred?
  "message" : "권한이 없습니다." // message for request,
  "data" : // response data, original error object
}


그러나 NestJS의 기능은 다음과 같은 기능이다.

export class SomethingDto {
  @IsNotEmpty()
  field : number
}


를 유효성 검사,

throw new UnauthorizedException(object, 'description');


과 NestJS가 지원하는 HttpException이다.

이 기능을 사용하는 NestJS는 자동적으로 응답하는 것 같다.

{
  "statusCode" : HttpStatusCode,
  "message" : string[],
  "error" : string
}


④ 제안하는 형식.

필터를 사용하고 있습니다. 다음은 비용이다.
이 금액이 지급됩니다.
  • http-exception.filter.ts

  • @Catch()
    export class HttpExceptionFilter implements ExceptionFilter {
      catch(exception: Error, host: ArgumentsHost) {
        const ctx = host.switchToHttp();
        const res = ctx.getResponse<Response>();
        const req = ctx.getRequest<Request>();
      }
    
        if(!(exception instanceof HttpException)) {
          exception = new HttpException(new ResponseDto(~~),     
          HttpStatus.Internal_Server_Error);
        }
    
        let response = (exception as HttpException).getResponse();
    
        // 시스템이 자동으로 던진 에러에는 statusCode가 존재함.
        if(response['statusCode']) {
          // your transform response object
        }
    
        const log = {
          timeStamp: new Date();
          url: req.url;
          response
        };
    
        Logger.error(long)
    
        res.status((exception as 
        HttpException).getStatus()).json(response);
    }
    

    다음에는 main.ts에서 함께 했다.

    // 중략
    
    app.useGlobalFilters(new HttpExceptionFilter());
    await app.listen(8080);
    
    // 후략
    


    예를 들면 다음과 같이 순조롭게 돌아오셨고



    '더 메이는 더 이상'입니다.

    참조
  • https://wikidocs.net/158651
  • 좋은 웹페이지 즐겨찾기