Задать вопрос
@Andrey1302
FullStack Developer (React.js | Node.js | Nest.js)

Какой подход использовать для разделения Swagger docs на 2 отдельных документа?

Я использую NestJS (v11) и @nestjs/swagger (v11.0.3).

У меня модульная структура приложения, где некоторые контроллеры предназначены для публичных клиентов (мобильное приложение, фронтенд), а другие — для админ-панели.

Когда я генерирую документацию Swagger с помощью SwaggerModule.createDocument(), в неё попадают все контроллеры модуля.

Я хочу разделить Swagger на два отдельных документа:
/docs → для публичного API (клиенты)
/docs-admin → для админского API

Текущая конфигурация Swagger (main.ts)
const config = new DocumentBuilder()
  .setTitle('API')
  .setDescription('API Documentation')
  .addServer(`${baseUrl}/${apiPrefix}`)
  .setVersion('1.0')
  .build();

const document = SwaggerModule.createDocument(app, config);

SwaggerModule.setup('docs', app, document, {
  swaggerOptions: {
    search: true,
  },
});


App.module.ts
@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
    }),
    CacheModule.register({
      isGlobal: true,
    }),
    TypeOrmModule.forRootAsync({
      inject: [ConfigService],
      useFactory: createTypeOrmConfig,
    }),
    ApiModule,
  ],
})
export class AppModule {}


api.module.ts
@Module({
  imports: [PerkProvidersModule, PerksModule],
})
export class MarketplaceDomainModule {}


perks.module.ts
@Module({
  imports: [TypeOrmModule.forFeature([Perk]), PerkProvidersModule],
  providers: [PerksService],
  controllers: [PerksController, AdminPerksController],
})
export class PerksModule {}


Проблема:
В массиве controllers я указываю сразу и PerksController, и AdminPerksController.
Из-за этого я не могу просто передать в конфигурацию Swagger:
include: [PerksModule]
Потому что в Swagger попадут оба контроллера, а мне нужно их разделить.

Вопрос:
Какой здесь лучший подход для решения этой задачи?
Стоит ли полностью разделить модули (например, создать PerksModule и AdminPerksModule) только ради раздельной генерации Swagger-документов?
  • Вопрос задан
  • 23 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы