J’ai intégré l’interface utilisateur Swagger dans mon application.
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:
[{“level”: “error”, “message”: “Impossible de lire le fichier http: // MYIP / swagger / docs / v1 “}]
Je ne suis pas sûr de ce qui le cause. Si je rafraîchit, cela fonctionne et montre une erreur après quelques secondes.
Je suppose que ” http: // MYIP / swagger / docs / v1 ” n’est pas accessible au public.
Par défaut, swagger ui utilise un validateur en ligne: online.swagger.io. S’il ne peut pas accéder à votre URL swagger, vous verrez ce message d’erreur.
Solutions possibles:
Désactiver la validation:
config.EnableSwagger().EnableSwaggerUi(c => c.DisableValidator());
Rendre votre site accessible au public
Hébergez le validateur localement:
Vous pouvez obtenir le validateur depuis: https://github.com/swagger-api/validator-badge#running-locally
Vous devrez également indiquer à swaggerui l’emplacement du validateur
config.EnableSwagger().EnableSwaggerUi(c => c.SetValidatorUrl(
Pour compléter la réponse acceptée … Je viens de commenter une ligne dans SwaggerConfig.cs. Je voulais seulement me débarrasser de l’erreur rouge sur la page principale du 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();
Définir this.model.validatorUrl = null;
dans dist/swagger-ui.js
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; }
Si vous utilisez le framework PHP Laravel avec L5-Swagger, il vous suffit de décommenter
'validatorUrl' => null,
à partir du fichier de configuration /config/l5-swagger.php