在 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
我已经遵循 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
以及显示的写入磁盘的解决方案 (
根据 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