全局前缀
要忽略通过 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:
反过来,http://localhost:3000/api/dogs
将公开狗的 Swagger UI: