我如何使用swagger-ui?

时间:2019-05-09 19:39:04

标签: swagger swagger-ui swashbuckle

我在我的Web api项目中使用了Swashbuckle NuGet软件包,并且我试图用此替换默认的Swagger UI。 https://github.com/jensoleg/swagger-ui

但我一直收到此错误消息

<?xml version="1.0" encoding="ISO-8859-1"?>
<Error>
<Message>An error has occurred.</Message>
<ExceptionMessage>Embedded resource not found - ReportsAPI.swagger-ui.Index.html</ExceptionMessage>
<ExceptionType>Swashbuckle.SwaggerUi.AssetNotFound</ExceptionType>
<StackTrace> at Swashbuckle.SwaggerUi.EmbeddedAssetProvider.GetEmbeddedResourceStreamFor(EmbeddedAssetDescriptor resourceDescriptor, String rootUrl) at Swashbuckle.SwaggerUi.EmbeddedAssetProvider.GetAsset(String rootUrl, String path) at Swashbuckle.Application.SwaggerUiHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)</StackTrace>
</Error>

我听了这篇文章的建议 Replace Swashbuckle UI completely

但是无法正常工作

我有一个基本的ASP.Net Web API 2(没有网站或html索引的简单的REST API)

因此,我从swagger-ui的GitHub页面下载了zip文件,并将dist文件夹复制到我的项目中,并将其包含为(尝试了Content和Embedded资源)-并将dist文件夹重命名为swagger-ui

所以我的根项目文件夹现在看起来像

enter image description here

然后我更改了Swagger配置以添加以下内容

c.CustomAsset("index", thisAssembly, "ReportsAPI.swagger-ui.Index.html");

对吗?我不确定从这里去哪里

我是否必须包括所有其他文件作为嵌入式资源?还是只是Index.html?我如何将其他文件标记为“内容”?总是复制吗?

1 个答案:

答案 0 :(得分:1)

这里是一种替代方案,不需要您将任何内容嵌入到您的项目中:

https://raw.githack.com/jensoleg/swagger-ui/master/dist/index.html?url=https://swagger-net-test.azurewebsites.net/swagger/docs/V1

如您所见,URL参数中提供了我的标准规范。
您可以使用该raw.githack.com或将dist文件夹复制到更方便的位置。


现在我想指出的是,这是swagger-ui的非常旧的版本,看起来维护得不好,也许您应该看看: ReDoc https://github.com/Rebilly/ReDoc/blob/master/README.md