Версия в заголовке в Nest
Иногда менять путь нельзя: прокси или общий шлюз уже зафиксировали адрес, а различать линии ответа всё равно нужно. Тогда версию удобнее передавать отдельным полем запроса, не трогая строку URI.
Nest поддерживает версионирование по заголовку. В точке запуска указывают тип HEADER и имя заголовка, из которого фреймворк читает значение версии. Имя задают так же, как в официальной документации Nest для этого режима. Клиент присылает нужное значение в этом заголовке, а обработчик с меткой версии получает запрос только при совпадении.
Покажем на примере постов:
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.HEADER,
header: 'Custom-Header',
});
await app.listen(3000);
}
bootstrap();
Контроллер списка с меткой первой линии и путём posts:
import { Controller, Get, Version } from '@nestjs/common';
@Controller('posts')
export class PostController {
@Get()
@Version('1')
getPosts(): string {
return 'All posts v1';
}
}
Контроллер подключаем в корневом модуле:
import { Module } from '@nestjs/common';
import { PostController } from './post.controller.js';
@Module({
controllers: [PostController],
})
export class AppModule {}
Настройте встроенное версионирование
по заголовку в точке запуска NodeJS
и верните список работников из
WorkerController по пути
workers, чтобы клиент передавал
линию API через служебный заголовок
запроса.