ASP.net Core中,Swagger不显示拆分的数组对象
创始人
2024-11-12 04:30:08
0

在ASP.NET Core中,Swagger默认不会显示拆分的数组对象,但可以通过自定义Swagger的SchemaFilter来解决这个问题。

下面是一个示例的解决方法。

首先,创建一个自定义的SchemaFilter类,例如SplitArrayObjectSchemaFilter:

using System;
using System.Linq;
using System.Reflection;
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

public class SplitArrayObjectSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        var propertiesToRemove = schema.Properties
            .Where(p => p.Value.Type == "array" && p.Value.Items.Type == "object")
            .Select(p => p.Key)
            .ToList();

        foreach (var propertyToRemove in propertiesToRemove)
        {
            schema.Properties.Remove(propertyToRemove);
            var splitProperties = context.Type.GetProperties(BindingFlags.Public | BindingFlags.Instance)
                .Where(p => p.Name.StartsWith(propertyToRemove + "[") && p.PropertyType.IsClass && p.PropertyType != typeof(string))
                .ToList();

            foreach (var splitProperty in splitProperties)
            {
                var splitPropertySchema = context.SchemaGenerator.GenerateSchema(splitProperty.PropertyType, context.SchemaRepository);
                schema.Properties.Add(splitProperty.Name, splitPropertySchema);
            }
        }
    }
}

然后,在Startup.cs文件中的ConfigureServices方法中注册该SchemaFilter:

public void ConfigureServices(IServiceCollection services)
{
    // ...

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "API", Version = "v1" });
        c.SchemaFilter();
    });

    // ...
}

这样,在使用Swagger生成API文档时,拆分的数组对象将会显示出来。

相关内容

热门资讯

有了最新消息!佛手在线辅助器苹... 有了最新消息!佛手在线辅助器苹果版"揭幕辅助攻略"好像真的是有挂(哔哩哔哩)1、任何佛手在线辅助器苹...
在玩家背景下!大唐辅助神器&q... 在玩家背景下!大唐辅助神器"解迷辅助神器"好像真的是有挂(哔哩哔哩)1、大唐辅助神器公共底牌简单,大...
近期!九九联盟辅助神器&quo... 近期!九九联盟辅助神器"详情辅助教程"切实是有挂(哔哩哔哩)1、超多福利:超高返利,海量正版游戏,九...
透视好友房!来玩app辅助工具... 透视好友房!来玩app辅助工具"开挂辅助工具"本来真的是有挂(哔哩哔哩)1、超多福利:超高返利,海量...
方法辅助挂!来玩app辅助器&... 方法辅助挂!来玩app辅助器"总结辅助方法"真是真的是有挂(哔哩哔哩)1)来玩app辅助器有没有挂:...
透视辅助!川南小闲辅助器&qu... 透视辅助!川南小闲辅助器"专业辅助插件"切实是真的有挂(哔哩哔哩);1、进入游戏-大厅左侧-新手福利...
2026版方法!微信小程序财神... 2026版方法!微信小程序财神十三张脚本"曝光辅助软件"都是是真的有挂(哔哩哔哩)进入游戏-大厅左侧...
第三方辅助挂!唐山撸麻雀德技巧... 第三方辅助挂!唐山撸麻雀德技巧"揭幕辅助工具"确实是真的有挂(哔哩哔哩)1、上手简单,内置详细流程视...
事发当天!宝宝浙江游戏脚本&q... 事发当天!宝宝浙江游戏脚本"教你辅助攻略"一直真的有挂(哔哩哔哩)1、首先打开宝宝浙江游戏脚本辅助器...
透视了解!微信小程序多乐辅助下... 透视了解!微信小程序多乐辅助下载"开挂辅助挂"切实真的有挂(哔哩哔哩)在进入微信小程序多乐辅助下载软...