Версия контроллера в Nest
Несколько страниц одной темы часто меняют сразу: и список, и карточка должны жить на одной линии API. Ставить метку на каждый обработчик отдельно утомительно, и легко забыть одну из страниц.
Метку версии можно повесить на весь
контроллер. Тогда все
обработчики внутри класса наследуют
одну линию без повторения записи.
В точке запуска по прежнему включают
версионирование, а в параметрах
@Controller рядом с путём
указывают поле версии.
Покажем на примере постов:
import { NestFactory } from '@nestjs/core';
import { VersioningType } from '@nestjs/common';
import { AppModule } from './app.module.js';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.enableVersioning({
type: VersioningType.URI,
});
await app.listen(3000);
}
bootstrap();
Вся линия API для posts задаётся один раз на классе:
import { Controller, Get } from '@nestjs/common';
@Controller({
path: 'posts',
version: '1',
})
export class PostController {
@Get()
getPosts(): string {
return 'All posts v1';
}
@Get('count')
getPostsCount(): string {
return 'Posts count v1';
}
}
Контроллер регистрируем в корневом модуле:
import { Module } from '@nestjs/common';
import { PostController } from './post.controller.js';
@Module({
controllers: [PostController],
})
export class AppModule {}
Закрепите одну линию API за всем
WorkerController с путём
workers, включив версионирование
по адресу в точке запуска NodeJS,
и верните из него и список, и
счётчик работников.