Задать вопрос
@historydev
Редактирую файлы с непонятными расширениями

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

Здравствуйте. Я написал фильтр, который выводит данные в указанном формате, но, если послать запрос с кривым 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'
			}
		}


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

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

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

Похожие вопросы