Версия в адресе в Nest
Клиенту проще всего различать линии API по разным адресам: в строке запроса видно, к какому варианту он обратился. Если версию не вынести в путь, приходится дублировать префиксы вручную и легко перепутать старый и новый маршрут.
Nest умеет читать версию из URI.
В точке запуска включают
версионирование по адресу
через перечисление VersioningType
с вариантом URI. По умолчанию
перед номером в пути ставится
короткий префикс, и клиент
обращается к адресу вида
сегмент версии плюс путь страницы.
Обработчик помечают версией,
и фреймворк сопоставляет запрос
только с подходящей меткой.
Покажем на примере постов:
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();
Контроллер списка с первой версией и путём posts:
import { Controller, Get } from '@nestjs/common';
@Controller({
path: 'posts',
version: '1',
})
export class PostController {
@Get()
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 сегментом версии в URI.