我已将其纳入swagger-ui
我的申请中。
当我尝试查看时,swagger-ui
我很好地获得了 API 的文档,但过了一段时间它在按钮上显示了一些错误图标。
错误消息如下所示:
[{"level":"error","message":"无法读取文件 http://MYIP/swagger/docs/v1"}]
我不确定是什么原因造成的。如果我刷新它可以工作并在几秒钟后显示错误。
我已将其纳入swagger-ui
我的申请中。
当我尝试查看时,swagger-ui
我很好地获得了 API 的文档,但过了一段时间它在按钮上显示了一些错误图标。
错误消息如下所示:
[{"level":"error","message":"无法读取文件 http://MYIP/swagger/docs/v1"}]
我不确定是什么原因造成的。如果我刷新它可以工作并在几秒钟后显示错误。
我猜“ http://MYIP/swagger/docs/v1 ”不能公开访问。
默认情况下,swagger ui 使用在线验证器:online.swagger.io。如果它无法访问您的招摇网址,那么您将看到该错误消息。
可能的解决方案:
禁用验证:
config.EnableSwagger().EnableSwaggerUi(c => c.DisableValidator());
使您的网站可公开访问
在本地托管验证器:
您可以从以下网址获取验证器:https ://github.com/swagger-api/validator-badge#running-locally
您还需要告诉 swaggerui 验证器的位置
config.EnableSwagger().EnableSwaggerUi(c => c.SetValidatorUrl(<validator_url>));
为了补充已接受的答案...我只是取消了 SwaggerConfig.cs 中的一行注释。我只想通过禁用验证器来摆脱主要的招摇页面上的红色错误。
// By default, swagger-ui will validate specs against swagger.io's online validator and display the result
// in a badge at the bottom of the page. Use these options to set a different validator URL or to disable the
// feature entirely.
//c.SetValidatorUrl("http://localhost/validator");
c.DisableValidator();
如果您使用来自swagger-ui
github repo 的文件,则可以通过在index.html
文件中设置validatorUrl
为来禁用文件null
中的模式验证:
window.onload = function() {
// Build a system
const ui = SwaggerUIBundle({
url: "/docs/open_api.json",
dom_id: '#swagger-ui',
validatorUrl : null, # <----- Add this line
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})
设置this.model.validatorUrl = null;
为dist/swagger-ui.js
我工作..
// Default validator
if(window.location.protocol === 'https:') {
//this.model.validatorUrl = 'https://online.swagger.io/validator';
this.model.validatorUrl = null;
} else {
//this.model.validatorUrl = 'http://online.swagger.io/validator';
this.model.validatorUrl = null;
}
对于在使用 Swashbuckle.OData 时遇到类似问题的任何人:
我在将 Swagger 与我们的 OData 端点集成时遇到问题(将ODataController用于 API 和Swashbuckle.OData NuGet 包)。我必须为它编写我们自己的文档过滤器并添加它:
GlobalConfiguration.Configuration
.EnableSwagger(c =>
{
c.SingleApiVersion("v1", "OurSolution.API");
c.DocumentFilter<SwaggerDocumentFilter>();
//c.CustomProvider((defaultProvider) => new ODataSwaggerProvider(defaultProvider, c, GlobalConfiguration.Configuration));
c.IncludeXmlComments(GetXmlCommentsPath());
c.UseFullTypeNameInSchemaIds();
c.RootUrl(req => ConfigurationManager.AppSettings["AppUrl"]);
})
.EnableSwaggerUi(c =>
{
c.DisableValidator();
});
显然,为了避免验证错误,我不得不注释掉设置ODataSwaggerProvider以及关闭验证器的行,如上面的帖子中所述。这使得 Swashbuckle.OData 的有用性值得怀疑,但我没有测试它与 vanilla Swashbuckle 一起使用的任何东西。
注意:我使用了 Swashbuckle.OData 的 GitHub 页面上描述的方法,但它不起作用:根本没有显示任何可能的端点。也许有人知道更好的解决方案。