当我的方法继承基本控制器时如何显示端点文档

时间:2018-08-22 14:18:53

标签: .net-core swagger swashbuckle

我有多个类(超过100个)从我的基类BaseController继承。我所有的类都是逻辑和模型,但是格式的响应(200、404、500,...)始终相同。

但是当我从基类继承时,在庞大的文档中,我看到了端点,但是响应的详细信息不存在。我该怎么办?

public class BaseController : Controller
{
    public BaseController() {}

    [Produces("application/json")]
    [SwaggerResponse(StatusCodes.Status200OK)]
    [SwaggerResponse(StatusCodes.Status404NotFound)]
    protected async Task<IActionResult> Get(int id)
    {
        ...
    }
}

public class MyController : BaseController
{
    [HttpGet("{id}")]
    public async Task<IActionResult> Get(int id)
    {
        return await base.Get(id).ConfigureAwait(false);
    }
}

1 个答案:

答案 0 :(得分:0)

就像@Helder Sepulveda说的那样,这超越了小巧。 我认为您可以使用IActionModelConvention模拟继承动作属性。 像这样使用Action.Filters

public class ActionMethodConvention : IActionModelConvention
{
    public void Apply(ActionModel action)
    {
        var actonBaseResponses = new List<SwaggerResponseAttribute>();//some code to get baseAction reflections
        foreach (var attr in actonBaseResponses)
        {
            action.Filters.Add(new Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute(actonBaseResponses.StatusCode));
        }
}