在 NestJS 中将 Swagger 文档生成为 JSON/YAML

Generate Swagger documentation as JSON/YAML in NestJS

我已经遵循 instructions to create a Swagger documentation,我的文档现在可以使用 Swagger UI 获得。我还想将文档生成为 JSON 或 YAML,这样就很容易导入,例如邮递员,但我在 SwaggerModule 中找不到任何合适的方法,Swagger UI 也没有任何导出按钮。

根据这个 github issue 您可以将创建的 Swagger document 字符串化,例如像这样将其写入文件系统:

const app = await NestFactory.create(ApplicationModule);
const options = new DocumentBuilder()
    .setTitle("Title")
    .setDescription("description")
    .setVersion("1.0")
    .build();
const document = SwaggerModule.createDocument(app, options);

fs.writeFileSync("./swagger-spec.json", JSON.stringify(document));
SwaggerModule.setup("/api", app, document);

await app.listen(80);

如果您关注 https://docs.nestjs.com/recipes/swagger.

,请尝试访问 /api/json 而不是 /api-json

以及显示的写入磁盘的解决方案 (),您仍然可以访问自己的 API 端点。

根据 docs,根据您使用 swagger-ui-express 还是 fastify 提供文档,位置会有所不同

To generate and download a Swagger JSON file, navigate to http://localhost:3000/api-json (swagger-ui-express) or http://localhost:3000/api/json (fastify-swagger) in your browser (assuming that your Swagger documentation is available under http://localhost:3000/api).

这还取决于您从何处提供 API,并假设您使用 /api。如果不是这种情况,请替换为您的端点,或者如果您没有为 swagger-ui-express 使用基础 URL,这将是 http://localhost:3000/-json