Swashbuckle 自定义字符串比较器不适用于订单组操作

nas*_*iar 5 icomparer swagger swagger-ui swagger-2.0 swashbuckle

在 Swashbuckle 中有一个名为 OrderActionGroupsBy 的设置,它应该更改 API 中的排序,但我所做的一切都不起作用,我无法确定这是否是 Swashbuckle 问题,或者由于我的 IComparer 不知道我是什么我做错了吗?

这是设置配置

       config.EnableSwagger(c =>
       {
            ...
            c.OrderActionGroupsBy(new CustomStringComparer());
            c.GroupActionsBy(apiDesc => GroupBy(apiDesc));
            ...
        }
Run Code Online (Sandbox Code Playgroud)

这是按类型而不是控制器名称对操作进行分组。

        private static string GroupBy(ApiDescription apiDesc)
        {
            var controllerName = apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName;
            var path = apiDesc.RelativePath;

            if (controllerName.Contains("Original"))
            {
                controllerName = controllerName.Replace("Original", "");
            }
            // Check if it is one of the entities if so group by that
            // Otherwise group by controller
            var entities = new List<string>() { "Users", "Apps", "Groups" };


            var e = entities.Where(x => attr.Contains(x.ToLower())).FirstOrDefault();
            if (e != null)
            {
                return e;
            }
            return controllerName;
        }
Run Code Online (Sandbox Code Playgroud)

这是我对 IComparer 的尝试,我首先想要用户,然后按字母顺序排列

        class CustomStringComparer : IComparer<string>
        {
            public int Compare(string x, string y)
            {
                if (x.CompareTo(y) == 0)
                    return 0;

                if (x.CompareTo("Users") == 0)
                    return -1;
                if (y.CompareTo("Users") == 0)
                    return 1;

                 return x.CompareTo(y);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这不起作用,无论我做什么,它总是默认为按字母顺序排列。

nas*_*iar 3

看起来这是 Swashbuckle/Swagger-ui 的一个错误

使用 OrderActionGroupsBy 可以正确对 JSON 文件进行排序,但是 swagger ui 会自动按照字母顺序排序。

我已经向 Swashbuckle 和 swagger-ui 提交了错误,因为这似乎违背了 swagger-ui 文档中有关 apisSorter 的内容。

对 API/标签列表应用排序。它可以是“alpha”(按名称排序)或函数(请参阅 Array.prototype.sort() 了解排序函数的工作原理)。默认是服务器返回的顺序不变。

虚张声势的问题

swagger-ui 问题

swagger-ui 特定的 stackoverflow 问题