РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsPmExCE 99 of 168 menu
◀ ▶

Своё исключение в Nest

Один и тот же отказ повторяется на нескольких маршрутах с одним текстом и кодом. Копировать длинную конструкцию в каждый метод неудобно и легко ошибиться в числе.

Свой класс наследует HttpException и в конструкторе передаёт текст и значение из HttpStatus. В методе достаточно создать объект этого типа без повторения статуса и фразы.

Покажем на примере постов:

import { HttpException, HttpStatus } from '@nestjs/common'; export class EmptyTitleException extends HttpException { constructor() { super('Title is required', HttpStatus.BAD_REQUEST); } }

В контроллере проверим название и бросим своё исключение:

import { Body, Controller, Post } from '@nestjs/common'; import { EmptyTitleException } from './empty-title.exception.js'; @Controller('posts') export class PostController { @Post() createPost(@Body() body: { title: string }) { if (!body.title.trim()) { throw new EmptyTitleException(); } return { title: body.title }; } }

Контроллер подключаем в корневом модуле:

import { Module } from '@nestjs/common'; import { PostController } from './post.controller.js'; @Module({ controllers: [PostController], }) export class AppModule {}

Опишите тип отказа для пустого имени работника, наследуя общее HTTP-исключение с кодом «неверный запрос» и своей фразой. Используйте его в WorkerController при создании и подключите контроллер к корневому модулю.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить