@nestjs/swagger:如何添加 API URL?
Posted
技术标签:
【中文标题】@nestjs/swagger:如何添加 API URL?【英文标题】:@nestjs/swagger: How to add API URL? 【发布时间】:2021-09-19 12:34:54 【问题描述】:我正在使用@nestjs/swagger。 这是我如何使用它的简单示例
const document = SwaggerModule.createDocument(
app,
new DocumentBuilder()
.setTitle('API')
.setDescription('API')
.setVersion('1.0')
.addBearerAuth()
.build(),
);
SwaggerModule.setup('/api/doc', app, document);
之前我可以使用 setHost('URL HERE')
添加 API url,但现在它不起作用。
所以我想添加将从 Swagger UI 发送请求的 api url。
如果问题不是很聪明,我是初学者很抱歉
谢谢!
【问题讨论】:
请添加您收到的错误详细信息或描述您面临的问题。 亲爱的@AvaniKhabiya,我们的目标是添加 api url,Swagger UI 将向其发送请求。之前它由 setHost 工作,但现在它不起作用。 看起来您使用的是@nestjs/swagger 版本 4***。 setHost 在版本 4*** 中被删除,但在版本 3*** 中可用。如果它在我猜@nestjs/swagger 的版本在您的项目中更新之前有效。正如我在答案中解释的那样,尝试使用.addServer(API_URL)
嗯。正是@CyberEternal。我正在使用@nestjs/swagger 4.8.1。您的答案有效,并且正是我需要的。非常感谢。
很高兴帮助@stratovarius!
【参考方案1】:
我认为您可能缺少控制器所在位置的“包含”参数。 尝试添加
const document = SwaggerModule.createDocument(
app,
new DocumentBuilder()
.setTitle('API')
.setDescription('API')
.setVersion('1.0')
.addBearerAuth()
.build(),
incliude: [ModuleWhereControllerIs]
);
【讨论】:
【参考方案2】:看起来您使用的是@nestjs/swagger 版本 4***。 setHost 在版本 4*** 中被删除,但在版本 3*** 中可用。如果在我猜你的项目中更新了@nestjs/swagger 的版本之前它可以工作。
如你所见here
@ApiModelProperty 现在是@ApiProperty @ApiModelPropertyOptional 现在是@ApiPropertyOptional @ApiResponseModelProperty 现在是@ApiResponseProperty @ApiImplicitQuery 现在是 @ApiQuery @ApiImplicitParam 现在是 @ApiParam @ApiImplicitBody 现在是@ApiBody @ApiImplicitHeader 现在是 @ApiHeader @ApiOperation( title: 'test' ) 现在是 @ApiOperation( summary: 'test' ) @ApiUseTags 现在是@ApiTags如果您当前使用的是 @nestjs/swagger@3.*,请注意 4.0 版中的以下中断/API 更改。
以下装饰器已更改/重命名:
添加标签 addBearerAuth addOAuth2 setContactEmail 现在是 setContact setHost 已被移除 setSchemes 已被移除(使用 addServer 代替,例如 addServer('http://'))DocumentBuilder 重大更改(更新的方法签名):
添加服务器 添加ApiKey addBasicAuth 添加安全性 添加安全要求已添加以下方法:
因此,如果您需要将 API URL 添加到您的 Swagger UI 页面,您可以通过添加 .addServer(API_URL)
来实现。 API_URL 可以是 /api
或 https://example.com/api
之类的东西。并且可以多次添加。如果您需要例如本地使用、开发和生产环境的 URL。
完整示例如下所示
const document = SwaggerModule.createDocument(
app,
new DocumentBuilder()
.setTitle('API')
.setDescription('API')
.setVersion('1.0')
.addBearerAuth()
.addServer(API_URL)
.build(),
);
SwaggerModule.setup(swaggerPath, app, document);
【讨论】:
这是我的荣幸。以上是关于@nestjs/swagger:如何添加 API URL?的主要内容,如果未能解决你的问题,请参考以下文章
@nestjs/swagger:如何在没有 @ApiOkResponse 装饰器的情况下添加架构?
NestJs Swagger:如何为动态类定义 Api 属性
NestJS Swagger:在 ApiProperty 装饰器中描述地图