2015-08-24 6 views
38

В моем приложении я включил пользовательский интерфейс swagger.Невозможно прочитать из файла в пользовательском интерфейсе Swagger

Когда я пытаюсь увидеть пользовательский интерфейс swagger, я получаю документацию API красиво, но через некоторое время он показывает значок ошибки на кнопке.

сообщение об ошибке, как показано ниже:

[{ "Уровень": "ошибка", "сообщение": "Невозможно прочитать из файла http://MYIP/swagger/docs/v1"}]

I я не уверен, что вызывает его. Если я обновляю, он работает и показывает ошибку через несколько секунд.

ответ

59

Я предполагаю, что «http://MYIP/swagger/docs/v1» не является общедоступным.

По умолчанию swagger ui использует онлайн-валидатор: online.swagger.io. Если он не может получить доступ к вашему URL-адресу swagger, вы увидите это сообщение об ошибке.

Возможные решения:

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

+2

Можете ли вы сказать в каком файле мы можем настроить убрать валидатор для отключения? – shashi009

+3

Это зависит от того, какую структуру вы используете. Например, с Web Api 2 в Startup.cs: 'общественного недействительными конфигурации (IAppBuilder приложение) { ... HttpConfiguration конфиг = новый HttpConfiguration(); SwaggerConfig.Регистрация (конфигурация); } '}' Затем валидатор может быть сконфигурирован в SwaggerConfig.cs –

+0

Для следующего человека - когда я скачал и получил значок-валидатор, работающий локально, я узнал, что мой jail jail был действительным. Ошибка была в том, что мой swagger.json недоступен удаленно (это то, что я [и, вероятно, вы] захотите). –

10

Чтобы дополнить принятый ответ ... Я просто раскомментировать одну строку в 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(); 
+1

Спасибо за обмен! –

+0

Где я могу найти конфигурацию swagger? –

+0

Я использую пакет Swawbuckle NuGet для Swagger, а SwaggerConfig.cs загружается в папку App_Start. –

0

Если вы используете PHP Laravel framework с L5-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; 
} 
Смежные вопросы