swagger-ui - studio - swashbuckle meaning
No se puede leer el problema del archivo en la interfaz de usuario de Swagger (6)
Establecer
this.model.validatorUrl = null;
en
dist/swagger-ui.js
funcionó para mí ...
// 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;
}
He incorporado swagger UI en mi aplicación.
Cuando trato de ver la interfaz de usuario de swagger, obtengo la documentación de la API muy bien, pero después de un tiempo muestra un icono de error en el botón.
El mensaje de error es el siguiente:
[{"nivel": "error", "mensaje": "No se puede leer el archivo http: // MYIP / swagger / docs / v1 "}]
No estoy seguro de qué lo está causando. Si actualizo funciona y muestra un error después de unos segundos.
Para complementar la respuesta aceptada ... acabo de comentar una línea en SwaggerConfig.cs. Solo quería deshacerme del error rojo en la página principal de swagger deshabilitando el validador.
// 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();
Si está utilizando archivos de
swagger-ui
github repo, puede deshabilitar la validación de esquema de su archivo
index.html
configurando
validatorUrl
como
null
en él:
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"
})
Si usa el framework PHP Laravel con L5-Swagger simplemente descomente
''validatorUrl'' => null,
desde el archivo de configuración
/config/l5-swagger.php
Supongo que " http: // MYIP / swagger / docs / v1 " no es de acceso público.
Por defecto, swagger ui usa un validador en línea: online.swagger.io. Si no puede acceder a su URL de swagger, verá ese mensaje de error.
Soluciones posibles:
-
Deshabilitar validación:
config.EnableSwagger().EnableSwaggerUi(c => c.DisableValidator());
-
Haga que su sitio sea de acceso público
-
Aloje el validador localmente:
Puede obtener el validador en: https://github.com/swagger-api/validator-badge#running-locally
También deberá indicarle a swaggerui la ubicación del validador
config.EnableSwagger().EnableSwaggerUi(c => c.SetValidatorUrl(<validator_url>));
Para cualquier persona que tenga un problema similar al usar Swashbuckle.OData:
Estaba teniendo problemas para integrar Swagger con nuestros puntos finales OData (usando ODataController para API y el paquete Swashbuckle.OData NuGet). Tuve que escribir nuestro propio filtro de documentos y agregarlo:
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();
});
Aparentemente para evitar un error de validación, tuve que comentar la línea que está configurando ODataSwaggerProvider junto con el apagado del validador como se menciona en las publicaciones anteriores. Esto hace que la utilidad de Swashbuckle.OData sea cuestionable, pero no probé lo que sea que funcione con Swashbuckle de vainilla.
Nota: Utilicé el enfoque descrito en la página de GitHub para Swashbuckle.OData pero no funcionaba: no mostraba ningún punto final posible. Quizás alguien sabe mejor solución.