Группы тегов + Redoc
Регистрируйте группы через docs({ group, tags }) и присоединяйте расширение x-tagGroups к документу перед отдачей.
Регистрация групп
users.controller.docs.ts / roles.controller.docs.ts
docs(UsersController, {
classDecorators: [ApiTags('users')],
group: 'Administration',
tags: ['users'],
});
docs(RolesController, {
classDecorators: [ApiTags('roles')],
group: 'Administration',
tags: ['roles'],
});group и tags в docs() необязательны. tags должны совпадать с тем, что вы уже передаёте в ApiTags(): nestjs-docfy не вызывает ApiTags за вас, он лишь берёт эти имена, чтобы построить отображение x-tagGroups. В одну group могут складываться несколько вызовов docs(), теги при этом объединяются, а дубликаты убираются.
Присоединение к документу
main.ts
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { attachTagGroups } from 'nestjs-docfy';
const document = SwaggerModule.createDocument(app, new DocumentBuilder().build());
SwaggerModule.setup('api', app, attachTagGroups(document));Вызывайте attachTagGroups() после SwaggerModule.createDocument() и до SwaggerModule.setup(). Если ни один контроллер не зарегистрировал group, функция ничего не делает и возвращает документ как есть. Redoc понимает x-tagGroups из коробки и рисует сгруппированную боковую панель. Подробности в разделе Группы тегов.
Generated x-tagGroups extension
x-tagGroups:
- name: Administration
tags:
- users
- roles