其他特色 Other features

此页面列出了您可能会觉得有用的所有其他可用功能。

全局前缀

要忽略通过 setGlobalPrefix() 设置的路由的全局前缀,请使用 ignoreGlobalPrefix

ts
const document = SwaggerModule.createDocument(app, options, {
  ignoreGlobalPrefix: true,
})

全局参数

您可以使用DocumentBuilder向所有路由添加参数定义:

ts
const options = new DocumentBuilder().addGlobalParameters({
  name: 'tenantId',
  in: 'header',
})

多种规范

SwaggerModule 提供了一种支持多种规范的方法。换句话说,您可以在不同的端点上提供具有不同 UI 的不同文档。

要支持多种规范,您的应用程序必须采用模块化方法编写。createDocument() 方法采用第三个参数 extraOptions,它是一个具有名为 include 的属性的对象。include 属性采用一个模块数组作为值。

您可以设置多种规范支持,如下所示:

ts
import { NestFactory } from '@nestjs/core'
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'
import { AppModule } from './app.module'
import { CatsModule } from './cats/cats.module'
import { DogsModule } from './dogs/dogs.module'

async function bootstrap() {
  const app = await NestFactory.create(AppModule)

  /**
   * createDocument(application, configurationOptions, extraOptions);
   *
   * createDocument 方法采用可选的第 3 个参数`extraOptions`
   * 它是一个具有`include`属性的对象,您可以在其中传递一个数组
   * 您想要包含在该 Swagger 规范中的模块
   * 例如:CatsModule 和 DogsModule 将有两个单独的 Swagger 规范,
   * 将在具有两个不同端点的两个不同 SwaggerUI 上公开。
   */

  const options = new DocumentBuilder()
    .setTitle('Cats example')
    .setDescription('The cats API description')
    .setVersion('1.0')
    .addTag('cats')
    .build()

  const catDocument = SwaggerModule.createDocument(app, options, {
    include: [CatsModule],
  })
  SwaggerModule.setup('api/cats', app, catDocument)

  const secondOptions = new DocumentBuilder()
    .setTitle('Dogs example')
    .setDescription('The dogs API description')
    .setVersion('1.0')
    .addTag('dogs')
    .build()

  const dogDocument = SwaggerModule.createDocument(app, secondOptions, {
    include: [DogsModule],
  })
  SwaggerModule.setup('api/dogs', app, dogDocument)

  await app.listen(3000)
}
bootstrap()

现在,您可以使用以下命令启动服务器:

bash
$ npm run start

导航到 http://localhost:3000/api/cats 以查看猫的 Swagger UI:

img

反过来,http://localhost:3000/api/dogs 将公开狗的 Swagger UI:

img