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
}
④ 제안하는 형식.
필터를 사용하고 있습니다. 다음은 비용이다.
이 금액이 지급됩니다.
@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);
// 후략
예를 들면 다음과 같이 순조롭게 돌아오셨고
'더 메이는 더 이상'입니다.
참조
Reference
이 문제에 관하여(NestJS에서 HTTP 예외를 사용자 정의하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jangluna/how-to-customize-http-exception-in-nestjs-3ceo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)