web-dev-qa-db-fra.com

Impossible de lire à partir d'un problème de fichier dans l'interface utilisateur Swagger

J'ai intégré swagger UI dans ma candidature. 

Lorsque j'essaie de voir l'interface utilisateur swagger, j'obtiens bien la documentation de l'API, mais après un certain temps, une icône d'erreur apparaît sur le bouton.

Le message d'erreur est comme ci-dessous:

[{"niveau": "erreur", "message": "Impossible de lire le fichier http: // MYIP/swagger/docs/v1 "}]

Je ne suis pas sûr de ce qui le cause. Si j'actualise cela fonctionne et affiche une erreur après quelques secondes.

54
Abi P

Pour compléter la réponse acceptée ... Je viens de commenter une ligne du fichier SwaggerConfig.cs. Je voulais seulement me débarrasser de l'erreur rouge sur la page principale de swagger en désactivant le validateur.

// 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();
15
Justin Pavatte

Si vous utilisez des fichiers de swagger-ui github repo, vous pouvez désactiver la validation de schéma de votre fichier index.html en définissant validatorUrl sur 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"
  })
3
Atul Vaibhav

Si vous utilisez PHP Laravel framework with L5-Swagger simplement décommenter 

'validatorUrl' => null,

depuis le fichier de configuration /config/l5-swagger.php

1
Seva Kalashnikov

La définition de this.model.validatorUrl = null; dans dist/swagger-ui.js a fonctionné pour moi.

// 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;
}
1
bobbyrne01

Pour anynoe ayant un problème similaire lors de l'utilisation de Swashbuckle.OData:

Je rencontrais des problèmes pour intégrer Swagger à nos points de terminaison OData (à l'aide de ODataController pour l'API et du package Swashbuckle.OData NuGet). Je devais écrire notre propre filtre de document et l'ajouter:

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

Apparemment, afin d'éviter une erreur de validation, je devais commenter la ligne qui définit ODataSwaggerProvider avec désactiver le validateur, comme mentionné dans les messages ci-dessus. Cela rend l'utilité de Swashbuckle.OData discutable mais je n'ai pas testé ce que cela fonctionne avec Vanilla Swashbuckle.

Remarque: j'ai utilisé l'approche décrite sur la page GitHub pour Swashbuckle.OData, mais cela ne fonctionnait pas: il n'y avait aucun point de terminaison possible. Peut-être que quelqu'un connaît une meilleure solution.

0
Diomos