在迁移到.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"));
});
}