Пользовательский компаратор строк Swashbuckle не применяется для групп действий порядка

В Swashbuckle есть параметр OrderActionGroupsBy, который должен изменить порядок в API, но ничего из того, что я делаю, не работает, и я не могу определить, является ли это проблемой Swashbuckle или из-за моего IComparer. я делаю неправильно?

Это установка конфигураций

       config.EnableSwagger(c =>
       {
            ...
            c.OrderActionGroupsBy(new CustomStringComparer());
            c.GroupActionsBy(apiDesc => GroupBy(apiDesc));
            ...
        }

Это группирует действия по типу, а не по имени контроллера.

        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;
        }

Это моя попытка 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);
            }
        }
    }

Это не работает, по умолчанию всегда используется алфавитный порядок, независимо от того, что я делаю.


person nastassiar    schedule 12.11.2015    source источник


Ответы (1)


Похоже, это ошибка Swashbuckle/Swagger-ui.

Использование OrderActionGroupsBy правильно сортирует файл JSON, но затем swagger ui автоматически прибегает к этому в алфавитном порядке.

Я сообщил об ошибках как в Swashbuckle, так и в swagger-ui, так как это, похоже, противоречит тому, что сказано в документе swagger-ui относительно apisSorter.

Примените сортировку к списку API/тегов. Это может быть «альфа» (сортировка по имени) или функция (см. Array.prototype.sort(), чтобы узнать, как работает функция сортировки). По умолчанию это порядок, возвращаемый сервером без изменений.

проблема с Swashbuckle

проблема пользовательского интерфейса swagger

вопрос о переполнении стека, связанный с swagger-ui

person nastassiar    schedule 18.11.2015