如何使用 Swagger 以及 Nest.js API 和 SPA 之间共享的 DTO?

问题描述 投票:0回答:1

我有一个带有 Nest.js API 和 Angular SPA 的项目。 SPA 用于与 API 通信的 DTO 位于一个名为 Models 的单独项目中,我将其用作依赖项。这样,我只需要在一处更改 DTO,就可以在两个项目中重复使用它们。

我一直在尝试使用

@nestjs/swagger
来记录我的 API。如果我希望在 Swagger 中显示 DTO 的属性,则该库要求我在 DTO 中使用装饰器。

当我这样做时,API 中的一切都按预期工作,但 Angular SPA 会崩溃,因为它没有

@nestjs/swagger
依赖项。即使将其安装为应用程序的依赖项后,它仍然需要我安装
@nestjs/common
express
mime
send
等,而且我不应该将所有这些后端相关依赖项安装到我的应用程序中为了文档的目的。

你们知道如何克服这个问题或有关使用 Nest.js 为 API 生成文档的其他技巧吗?

swagger nestjs dto documentation-generation nestjs-swagger
1个回答
0
投票

@nestjs/swagger
暴露了可用于解决我们的问题的
SwaggerModule
。使用以下代码示例:

import { NestFactory } from "@nestjs/common"
import { DocumentBuilder, SwaggerModule } from "@nestjs/swagger"
import { writeFileSync } from "fs"

const app = await NestFactory.create(YourAppModule)
const documentBuilder = new DocumentBuilder()
.setTitle("My API")
.setDescription("OpenAPI documentation for my API")
const openApiDocument = SwaggerModule.createDocument(app, documentBuilder.build())
const openApiJsonDocument = JSON.stringify(openApiDocument, undefined, 2)
writeFileSync("openApi.json", openApiJsonDocument, { encoding: "utf-8" })

拥有

openApi.json
后,您可以使用
@openapitools/openapi-generator-cli
npm 包以您所需的编程语言和前端框架生成 API 客户端。

© www.soinside.com 2019 - 2024. All rights reserved.