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

Нейтральная версия в Nest

Часть клиентов ещё не шлёт метку версии, а общий служебный адрес должен отвечать в любом случае. Жёстко привязать такой адрес к одной линии API значит отрезать запросы без версии или дублировать один и тот же код.

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

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

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();

Список с нейтральной меткой и отдельной линией на том же пути:

import { Controller, Get, VERSION_NEUTRAL, Version, } from '@nestjs/common'; @Controller('posts') export class PostController { @Get() @Version(VERSION_NEUTRAL) getPostsNeutral(): string { return 'All posts neutral'; } @Get() @Version('1') getPostsV1(): string { return 'All posts v1'; } }

Контроллер регистрируем в корневом модуле:

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

Добавьте в WorkerController ответ по адресу workers, который срабатывает и без сегмента версии в URI, и вместе с явной линией API, рядом с обычным версионированным вариантом того же списка.

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