我正在使用Swashbuckle为我的ASP.Net Core 3.1 OData项目生成Swagger文档。
控制器方法的生成是完美的。它可以根据模型正确生成模式,除了以下几点:
对于模式中的每个模型,它还会生成一个附加的[ModelName]IQueryableODataValue
条目,如下面的屏幕快照所示:
蓝色复选标记指示型号。用红色圈起来的模型条目是多余的条目,也正在添加。
注意,它也在生成Void
模型,也用红色圆圈圈出。
如何获得基本的文档,以省去我用红色圆圈圈出的模型条目?我怀疑这与添加SchemaFilter有关。但我不知道如何应用它来解决此问题。
@@ 0909EM的评论使我对SchemaFilter进行了一些深入研究,最终我使用以下SchemaFilter来完成技巧:
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.Linq;
namespace MyProject.SwaggerConfig
{
public class RemoveBogusDefinitions : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
foreach (var item in context.SchemaRepository.Schemas.Keys.Where(r => r.EndsWith("ODataValue")))
context.SchemaRepository.Schemas.Remove(item);
context.SchemaRepository.Schemas.Remove("Void");
}
}
}