标签分组 + 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'],
});

docs() 中的 grouptags 都是可选的。tags 应该和你已经传给 ApiTags() 的保持一致:nestjs-docfy 不会替你调用 ApiTags,只是用这些名字来构建 x-tagGroups 映射。多个 docs() 调用可以贡献给同一个 group;标签会被合并并去重。

附加到文档

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

SwaggerModule.createDocument() 之后、SwaggerModule.setup() 之前调用 attachTagGroups()。如果没有任何控制器注册 group,这个函数就是一个空操作,会原样返回文档。Redoc 原生读取 x-tagGroups 并渲染出分组侧边栏。详情见标签分组

Generated x-tagGroups extension
x-tagGroups:
  - name: Administration
    tags:
      - users
      - roles