Игнорировать действия сторонних контроллеров в Swagger - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть веб-приложение ASP.NET Core 2.1, которое обслуживает отчеты DevExpress через интерфейс веб-API.

Я хотел бы использовать сваггер, чтобы показать потребителям использование и предоставить некоторую полезную информацию омой веб-API.Однако Swagger аварийно завершает работу со следующей ошибкой:

NotSupportedException: неоднозначный метод HTTP для действия - DevExpress.AspNetCore.Reporting.QueryBuilder.QueryBuilderController.Invoke (DevExpress.AspNetCore.Reporting.v18.2).Действия требуют явной привязки HttpMethod для Swagger 2.0

Проблема заключается в том, что Swagger пытается проанализировать API, содержащийся в DevExpress ' QueryBuilderController .Однако я не хочу, чтобы swagger анализировал эти сторонние контроллеры.Теперь у меня вопрос, как отфильтровать / отключить сторонние библиотеки в swagger?

Спасибо, Свен

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Я получил его, используя пользовательский DocInclusionPredicate, как предложено .

Пример кода:

services.AddSwaggerGen(c =>
{
      c.DocInclusionPredicate((docName, apiDesc) =>
      {
          // Filter out 3rd party controllers
          var assemblyName = ((ControllerActionDescriptor)apiDesc.ActionDescriptor).ControllerTypeInfo.Assembly.GetName().Name;
          var currentAssemblyName = GetType().Assembly.GetName().Name;
          return currentAssemblyName == assemblyName;
      });
      c.SwaggerDoc("v1", new Info { Title = "FileService API", Version = "v1" });
});
0 голосов
/ 16 февраля 2019

Вы можете использовать Swaggers DocumentFilter для достижения этой цели, вот пример: Пример использования DocumentFilter

...