不能从扬鞭UI文件读取的问题

问题描述 投票:60回答:6

我在申请中招摇UI。

当我尝试和看到招摇UI,我得到的API的文档很好,但一段时间后,它显示在按钮的一些错误图标。

该错误消息是象下面这样:

[{“水平”:“错误”,“消息”:“不能从文件读http://MYIP/swagger/docs/v1”}]

我不知道是什么原因造成的。如果我刷新它的工作原理和几秒钟后显示错误。

swagger-ui swashbuckle
6个回答
91
投票

我猜“http://MYIP/swagger/docs/v1”不能公开访问。

默认情况下,招摇UI使用在线验证:online.swagger.io。如果它无法访问您的招摇网址,然后你会看到错误消息。

可能的解决方案:

  1. 禁用验证: config.EnableSwagger().EnableSwaggerUi(c => c.DisableValidator());
  2. 让您的网站可公开访问
  3. 本地主机验证:

你可以从验证:https://github.com/swagger-api/validator-badge#running-locally

您还需要告诉swaggerui验证的位置

config.EnableSwagger().EnableSwaggerUi(c => c.SetValidatorUrl(<validator_url>));


18
投票

为了补充接受的答案...我只是注释掉在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();

6
投票

如果您正在使用从swagger-ui GitHub库文件,那么你可以从你的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"
  })

2
投票

如果您在使用PHP Laravel frameworkL5-Swagger只是取消注释

'validatorUrl' => null,

从配置文件/config/l5-swagger.php


1
投票

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;
}

0
投票

要anynoe有使用Swashbuckle.OData时,类似的问题:

我跟我们的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的有效性值得怀疑但我没有测试任何它的工作原理与香草Swashbuckle。

注:我用的GitHub页面上Swashbuckle.OData描述的方法,但它不工作:显示完全没有可能的端点。也许有人知道更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.