标签分组(x-tagGroups)

在支持 x-tagGroups 扩展的工具(最典型的是 ReDoc)中,把控制器组织进逻辑分区。

声明分组

grouptags 传给 docs()

users.controller.docs.ts
// users.controller.docs.ts
docs(UsersController, {
  classDecorators: [ApiTags('users')],
  group: 'Administration',
  tags: ['users'],
});

// roles.controller.docs.ts
docs(RolesController, {
  classDecorators: [ApiTags('roles')],
  group: 'Administration',
  tags: ['roles'],
});

tags 需要和你已经传给 ApiTags() 的保持一致。nestjs-docfy 不会替你调用 ApiTags,它只是根据你声明的内容构建 x-tagGroups 映射。

附加到文档

要把分组真正附加到生成的文档上,在 SwaggerModule.createDocument() 之后调用 attachTagGroups()

main.ts
// main.ts
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { attachTagGroups } from 'nestjs-docfy';

const config = new DocumentBuilder().setTitle('My API').build();
const document = SwaggerModule.createDocument(app, config);

SwaggerModule.setup('api', app, attachTagGroups(document));

生成的扩展字段

yaml
x-tagGroups:
  - name: Administration
    tags:
      - users
      - roles

多个 docs() 调用可以贡献给同一个分组:标签会被合并并去重。当没有任何控制器声明 group 时,attachTagGroups() 是一个空操作(原样返回文档)。