Сортировка API-методов в Swagger-UI

Я не могу найти какой-либо рабочий пример, как добиться следующего: Я хочу, чтобы мои API-методы в Swagger-UI сортировались либо методами (GET-POST-PUT-DELETE) ИЛИ/И в алфавитном порядке.

Пока все методы отображаются в случайном порядке, даже не в порядке, указанном в моем исходном коде.

Я использую Jax-RS + Jersey 1.

Сортировка с использованием атрибута position @ApiOperation для меня не является вариантом, так как существует слишком много методов, и API все еще расширяется, поэтому мне нужно будет обновить все, если есть новый.

Любые подсказки?

Ответы

Ответ 1

Обновление для Swagger UI 2.1.0 +: Параметр sorter был разделен на два параметра, как указано в Fix 1040, Исправить 1280:

apisSorter

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

operationsSorter

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

Итак, вам нужно обновить sorter до apisSorter, чтобы отсортировать список API в алфавитном порядке и/или operationsSorter, чтобы отсортировать список операций каждого API. Демо-версия домашнего кинотеатра обновилась до apisSorter, как показано ниже:

Пример: (рабочая демонстрация, отсортирована в алфавитном порядке)

window.swaggerUi = new SwaggerUi({

...

apisSorter : "alpha"
});

Для версий пользовательского интерфейса Swagger старше 2.1.0:

Параметр sorter по-прежнему относится к более старым версиям интерфейса Swagger:

Вы можете использовать параметр сортировщика при создании экземпляра SwaggerUi. Это происходит в javascript на Swagger-Ui index.html. В документации :

сортировщик применяет сортировку к списку API. Это может быть " альфа" (сортировать пути alphanumerically) или метод '(операции сортировки по методу HTTP). По умолчанию используется порядок, возвращаемый сервером без изменений.

Пример:

window.swaggerUi = new SwaggerUi({

...

sorter : "alpha"
});

Ответ 2

// I had the same issue and i fixed like this 
window.swaggerUi = new SwaggerUi({
    apisSorter: "alpha", 
    operationsSorter: function (a, b) { 
    var order = { 'get': '0', 'post': '1', 'put': '2', 'delete': '3' }; 
    return order[a.method].localeCompare(order[b.method]);    
  },
});

Ответ 3

Принятый ответ немного устарел. В новых версиях это делается:

window.swaggerUi = new SwaggerUi({

...

apisSorter: "alpha", // can also be a function
operationsSorter : "method", // can also be 'alpha' or a function
});