Полезные данные отказа в Nest
Клиент получает только короткую фразу, хотя в адресе был конкретный номер. Без отдельного поля в теле ответа трудно понять, какую запись искали.
В готовый тип «не найдено» можно передать объект вместо строки. Фреймворк положит его в тело ответа, и клиент увидит и сообщение, и номер из запроса.
Покажем на примере постов:
import {
Controller,
Get,
NotFoundException,
Param,
} from '@nestjs/common';
@Controller('posts')
export class PostController {
private posts = [{ id: '1', title: 'Morning note' }];
@Get(':id')
getPost(@Param('id') id: string): string {
const post = this.posts.find((item) => item.id === id);
if (!post) {
throw new NotFoundException({
message: 'Post not found',
id,
});
}
return post.title;
}
}
Контроллер регистрируем в корневом модуле:
import { Module } from '@nestjs/common';
import { PostController } from './post.controller.js';
@Module({
controllers: [PostController],
})
export class AppModule {}
Откройте работника по номеру в
WorkerController. Если записи
нет, прервите метод отказом «не найдено»
с объектом, где есть текст и тот
номер, что пришёл из адреса.
Подключите контроллер к корневому
модулю.