带有Swagger的常见ApiController基类

时间:2018-10-03 09:54:28

标签: c# .net rest swagger webapi2

因此,我实现了我的第一个REST API应用程序,并且一切正常,包括Swagger(我使用Swashbuckle并可以测试我的API)

在我阅读的文档中,“ ...控制器必须从ApiController开始扩展...”。我明白了。但是,从字面上看,我应该怎么做?我想做的是避免在每个ApiController扩展名中复制代码。例如,我有两个控制器-ProductControllerDeviceController-两者都扩展了ApiController。我创建了扩展BaseController的类ApiController。然后我将产品控制器和设备控制器的基类都更改为基本控制器

public class BaseController : ApiController
{
}

public class ProductController : BaseController // ApiController
{
}

public class DeviceController : BaseController // ApiController
{
}

1)当我点击/ swagger URL时,Swagger应用程序出现错误。 2)我真的不希望我的BaseController甚至可以处理任何请求。我想要的是拥有可以在所有控制器中使用的通用辅助方法,例如ProductControllerDeviceController

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

尝试在控制器级别使用@ApiIgnore批注。

   [ApiExplorerSettings(IgnoreApi = true)]
    public class BaseController : ApiController
    {
    }

答案 1 :(得分:0)

就我而言,[ApiExplorerSettings(IgnoreApi = true)] 还会删除所有继承控制器。

我必须使用 [NonAction] 过滤器标记基本控制器中的方法,如下所述:https://stackoverflow.com/a/63845979/218408

点网 5