如何使用Swashbuckle的SwaggerUI显示静态的swagger.json文件,而不是SwaggerGen的动态创建的定义?

时间:2019-07-18 16:36:55

标签: asp.net-core-mvc openapi swashbuckle

我有一个针对.NET Core 2.1框架的ASP.NET Core MVC应用程序。该应用程序提供RESTful API并返回JSON数据。

SwaggerHub中使用基于Web的交互式SwaggerGen,我创建了一个API定义文档,并将其以JSON格式保存为ASP.NET Core MVC应用程序项目中的文件夹中的“ swagger.json”。

Manually created 'swagger.json' API definition file

由于已经定义了API,因此不需要在应用程序中运行SwaggerGen。我只想SwaggerUI来显示我创建的静态“ swagger.json”文件。

我已经阅读了Swashbuckle文档以及一些“如何开始使用Swashbuckle”教程,但是他们都假定SwaggerGen将用于根据我的API动态创建Swagger API文档。

我已将'Swashbuckle.AspNetCore'NuGet软件包添加到应用程序的依赖项中。

Swashbuckle.AspNetCore NuGet package

在应用程序的Startup.cs类的Configure()方法中,我添加了UseSwaggerUI指令:

app.UseSwaggerUI(c => {
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");

在Visual Studio中运行应用程序时,我得到一个正常的空白页。

ASP.NET Core MVC application running

根据Swashbuckle文档,假定已添加SwaggerGen并已动态生成API定义(文件?),则应该在相对的“ / swagger”路径中使用SwaggerUI格式的API文档。

获取相对的'/ swagger'路径会产生'400 Bad Request'错误。

Requesting the Swagger documentation produces '400 Bad Request' error

问:SwaggerGen会产生自己的“ swagger.json”文件吗?如果是的话,它将在哪里创建该文件?

问:有没有办法告诉SwaggerUI在哪里找到并显示我手动创建的“ swagger.json” API定义文件?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用URL参数告诉任何Swagger-UI在哪里找到文件:

这就是您所需要的,如果您已经使用SwaggerHub生成了定义,则可以使用任何Swagger-UI,而无需安装swashbuckle。


如果您想自己托管Swagger-UI,只需将dist文件夹复制到您的Web服务器:
https://github.com/swagger-api/swagger-ui/tree/master/dist

答案 1 :(得分:0)

  1. 在本地计算机上,创建一个小型节点项目,安装swagger-ui-dist

  2. 将已安装的文件从node_modules / swagger-ui-dist复制到托管swagger网站的Web服务器

  3. 将生成的swagger.json复制到Web服务器中的同一文件夹

  4. 编辑index.html并将URL添加到您的json中,例如。 '/swagger.json'

  5. 完成

来源

https://yanhan.github.io/posts/2017-11-26-using-swagger-ui-with-any-codebase.html