我已经构建了一个nestjs webapi,并按照https://docs.nestjs.com/techniques/versioning
在控制器和操作级别实现了版本控制我正在研究的解决方案是,我想根据控制器版本生成2个不同的swagger。 例如,我为 2 个不同版本定义了 2 个控制器。如果我点击 [example.com/v1/swagger] ,它应该只加载 v1 版本控制器 swagger 文档,v2 也类似
我最近更新了 API 以支持版本控制。我无法正确加载 Swagger 文档。这是我的解决方案,希望对您有所帮助!
之前,我们使用
app.setGlobalPrefix(APP_ROUTE_PREFIX)
来定义前缀。
const APP_ROUTE_PREFIX = 'api/v2';
app.setGlobalPrefix(APP_ROUTE_PREFIX);
Swagger 文档安装为:
SwaggerModule.setup(`${APP_ROUTE_PREFIX}/docs`, app, document);
为了采用版本控制,更改了以下内容。
const APP_ROUTE_PREFIX = 'api';
app
.enableVersioning({ type: VersioningType.URI, defaultVersion: '2' })
.setGlobalPrefix(APP_ROUTE_PREFIX);
:version
。 SwaggerModule.setup(`${APP_ROUTE_PREFIX}/:version/docs`, app, document);
@Controller({ path: 'objects/:id', version: ['2', '3'] })
@Version('2')
getPageV2(): Promise<Observable<unknown>> {
return this.service.getOkayData();
}
@Version('3')
getPageV3(): Promise<Observable<unknown>> {
return this.service.getBetterData();
}
app.enableVersioning();应该在 SwaggerModule.createDocument(...) 之前调用
来源:https://github.com/nestjs/swagger/issues/1495#issuecomment-898311614