无法使用自定义基本控制器创建 swagger.json [英] Unable to create swagger.json with custom base controller

查看:45
本文介绍了无法使用自定义基本控制器创建 swagger.json的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为SampleController"的控制器,它使用MyControllerBase"(来自 NuGet 包)作为基类.

I have a controller say 'SampleController' that uses 'MyControllerBase'(from a NuGet package) as a base class.

我正在尝试使用 swagger 添加 API 文档,但 swagger 无法获取SampleController",因此无法创建 swagger.json.

I am trying to add API documentation using swagger but the swagger is unable to fetch 'SampleController' thus cannot create swagger.json.

我收到错误获取错误:/swagger/v1/swagger.json"

I am getting the error "fetch error: /swagger/v1/swagger.json"

'MyControllerBase' 继承了 'ControllerBase',因此 'SampleController' 可以作为 API 工作.

'MyControllerBase' inherits 'ControllerBase' so 'SampleController' is working as an API should work.

如何告诉 swagger 使用MyControllerBase"来查找控制器

How can I tell swagger to use 'MyControllerBase' to find Controllers

来自 Nuget 包:

From Nuget Package:

namespace My.ApiFormatter.Controller
{
  public abstract class MyControllerBase<T> : ControllerBase, IFilterableController
  {
    public virtual Dictionary<string, IFilterMapper> FilterWhitelist => new Dictionary<string, IFilterMapper>();
  }
}

实施:

  [Route("api/[controller]")]
  [ApiController]
  public class SampleController : MyControllerBase<ExampleData>
  {
    [HttpGet]
    public override ActionResult<CollectionEnvelope<ExampleData>> GetAll()
    {
      var results = ExampleDatas
        .Where(x => x.Key > (Info.PageSize * Info.SkipPages)
            && x.Key <= (Info.PageSize * (Info.SkipPages + 1)))
        .Select(y => y.Value).ToList();

      var collectionEnvelope = GetCollectionEnvelope(results, ExampleDatas.Count);
      return Ok(collectionEnvelope);
    }
  }

推荐答案

Swagger 只会将方法作为基类中的控制器获取.您可能会收到错误消息,因为 swagger 认为任何公共方法都是一个端点.使不受端点保护的方法和属性

Swagger will just get the methods as controllers in the base class. You are probably getting the error, because swagger thinks any public method is an endpoint. Make the methods and properties that aren't endpoints protected

这篇关于无法使用自定义基本控制器创建 swagger.json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆