标签分组 + 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() 中的 group 和 tags 都是可选的。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