ลบ Schema บน Swagger UI -continued

Oct 16 2020

ฉันได้ติดตามบทความด้านบน: .Net Core 3.1 ลบ Schema บน Swagger UI

ฉันใช้ตัวกรองนี้:

public class RemoveSchemasFilter : IDocumentFilter
{
    public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
    {
        
        IDictionary<string, OpenApiSchema> _remove = swaggerDoc.Components.Schemas;
        foreach (KeyValuePair<string, OpenApiSchema> _item in _remove)
        {
            swaggerDoc.Components.Schemas.Remove(_item.Key);
        }
    }
}

ฉันได้เพิ่มไว้ที่นี่:

services.AddSwaggerGen(options =>
            {
                options.OperationFilter<AddRequiredHeaderParameter>(Configuration.GetSection("DefaultConfig")["TenantId"]);
                options.DocumentFilter<RemoveSchemasFilter>();
             }

Schema ที่ดีทั้งหมดจะถูกลบออกจากด้านล่างของ Swagger UI อย่างไรก็ตามเมื่อฉันคลิกที่วิธีการหนึ่งมันจะทำให้เกิดข้อผิดพลาดขึ้น ใช้งานได้ แต่หน้าต่างนี้ยังคงอยู่ด้านบนและมันน่ารำคาญมาก

มาแก้ปัญหานี้ด้วยกันเพราะยังไม่ได้แก้ไขก่อนหน้านี้!

คำตอบ

2 grozdeto Oct 22 2020 at 14:21

ตัวกรองสคีมาไม่มีประโยชน์

สิ่งที่ต้องทำคือเข้า

app.UseSwaggerUI(options =>
{
                options.DefaultModelsExpandDepth(-1);

}

หมายเหตุ: เป็นรุ่นเริ่มต้นไม่ใช่รุ่นเริ่มต้น DIfference คือ DefaultModel คือความลึกของการขยายเริ่มต้นสำหรับโมเดลในส่วนตัวอย่างโมเดลในขณะที่ DefaultModels คือความลึกของการขยายสำหรับโมเดล