HistoryART
@HistoryART
Надзиратель

Как обработать ошибку в запросе руками?

Здравствуйте. Я написал фильтр, который выводит данные в указанном формате, но, если послать запрос с кривым json например, то фильтр игнорируется и подключается стандартный nest BadExceptionsRequest, я пока пришёл к такому решению или костылю, не знаю правильно ли это, интерсептор попробовал по докам, он не перекрыл это.

import {ExceptionFilter, Catch, ArgumentsHost, HttpException, HttpCode} from '@nestjs/common';
import { Request, Response } from 'express';

@Catch(HttpException)
export class HttpExceptionFilter {
	catch(exception: HttpException, host: ArgumentsHost) {
		const ctx = host.switchToHttp();
		const response = ctx.getResponse<Response>();
		const request = ctx.getRequest<Request>();
		const status = exception.getStatus();
		let data = exception.getResponse();
		
		if(exception.getStatus() === 400) {
			data = {
				status: 400,
				message: 'Bad request'
			}
		}
		
		response
			.status(status)
			.json({
				status: status,
				response: data
			});
	}
}


Это нормальная практика или есть другой вариант?

if(exception.getStatus() === 400) {
			data = {
				status: 400,
				message: 'Bad request'
			}
		}


Спасибо.
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
iDmitriyWinX
@iDmitriyWinX
В чём концепция...?
Если вам принципиально не нужен собственный Exception Filter, то почему бы вам не использовать DTO с class-validator? Ошибки генерируются динамически и в удобном для чтения формате.

А если нужен именно Exception Filter, то наверное всё ок, не вижу никаких проблем.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы