Swashbuckle.AspNetCore Swagger [5.0.0 | [OpenAPI 3.0]过滤器来设置消耗/生产

时间:2019-12-26 17:55:07

标签: .net swagger swagger-ui openapi openapi.net

在迁移到.NET Core 3.0和Swagger 5.0.0-rc4时,我需要重新实现以下文档过滤器:

internal sealed class CommonDocumentFilter : IDocumentFilter
{
    public void Apply(SwaggerDocument swaggerDoc, DocumentFilterContext context)
    {
        swaggerDoc.Consumes = new List<string> { "application/json" };
        swaggerDoc.Produces = new List<string> { "application/json" };
    }
}

SwaggerDocument现在已迁移到OpenApiDocument,并且不再提供直接设置文档的使用/提供的功能。我知道我可以使用Microsoft.AspNetCore.Mvc.ConsumesAttribute / ProducesAttribute装饰控制器,但是,这将需要大量重构,并迫使开发人员将这些属性用于每个新控制器。

Github中存在一个未解决的问题:https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1296

UPD:

  

同时,是否有其他解决方案?

可以设置global filter而不是更新控制器注释:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc(options =>
    {
        options.Filters.Add(new ConsumesAttribute("application/json"));
        options.Filters.Add(new ProducesAttribute("application/json"));
    });
}

0 个答案:

没有答案