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

Joa*_*gge 3 javascript node.js swagger nestjs

我已按照说明创建了Swagger文档,现在可以通过Swagger UI使用我的文档。我还想将文档生成为JSON或YAML,以便在Postman等中轻松导入,但是我在中找不到任何合适的方法,SwaggerModule而Swagger UI也没有任何导出按钮。

Suh*_*tar 21

在Nestjs v9中测试

假设docs路径如下

http://localhost:3000/docs
Run Code Online (Sandbox Code Playgroud)

获取 JSON

http://localhost:3000/docs-json
Run Code Online (Sandbox Code Playgroud)

获取 YAML

http://localhost:3000/docs-yaml
Run Code Online (Sandbox Code Playgroud)


小智 12

尝试访问/api/json而不是/api-json遵循https://docs.nestjs.com/recipes/swagger


Kim*_*ern 6

根据这个github问题,您可以将创建的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);
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说非常有效,我添加了一个 if 条件以仅在开发环境中保存该文件:`if (process.env.NODE_ENV === 'development')` (3认同)