Заказ операций API Swagger

Как мне отсортировать мою операцию по методу в алфавитном порядке, например. DELETE, GET, POST, PUT.

Я прочитал этот пост, но он в HTML, но в моем случае я интегрировал Swagger в Spring Boot, поэтому мне нужно отсортировать его при создании Docket.

Сортировка методов API в пользовательском интерфейсе Swagger

Потом я заметил этот метод operationOrdering() в Docket, но до сих пор не могу заставить его работать.


person Javatar    schedule 23.01.2017    source источник


Ответы (3)


Я использую Springfox версии 2.8.0, и следующий фрагмент кода работает для моего задокументированного API:

@Bean
UiConfiguration uiConfig() {
    return UiConfigurationBuilder
            .builder()
            .operationsSorter(OperationsSorter.METHOD)

            ...

            .build();
}

Возможны 2 значения:

  • OperationsSorter.ALPHA — сортирует конечные точки API в алфавитном порядке по пути.
  • OperationsSorter.METHOD — сортирует конечные точки API в алфавитном порядке по методу.

OperationsSorter.METHOD это то, что вы ищете.


Альтернатива с использованием operationOrdering():

@Bean
public Docket api() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.any())
        .paths(PathSelectors.any())
        .build()

        ...

        .operationOrdering(new Ordering<Operation>() {
            @Override
            public int compare(Operation left, Operation right) {
                return left.getMethod().name().compareTo(right.getMethod().name());
            }
        })
}

Однако это не работает из-за ошибки в Springfox, которая, похоже, все еще активна (порядок операций не работает).

person Vladas Maier    schedule 11.10.2018
comment
@DanielHári, ты имеешь в виду OperationsSorter или альтернативу? - person Vladas Maier; 26.02.2019
comment
Ни один из них не работает, он сортирует все операции по URL-адресу. - person Daniel Hári; 26.02.2019
comment
@DanielHári Я использую Springfox версии 2.9.2 в своем проекте, и метод OperationSorter у меня работает. И ALPHA, и METHOD. Не могу воспроизвести. - person Vladas Maier; 26.02.2019
comment
Вот моя конфигурация, которая не работает: gist.github.com/haridaniel/0e8c9ae63ff8daac866c2b6ff53ccc2c - person Daniel Hári; 26.02.2019

@Bean
public UiConfiguration uiConfig() {
    return UiConfigurationBuilder
            .builder()
            .operationsSorter(OperationsSorter.METHOD)
            .build();
}

Это работает для меня. Я использую Spring Boot 2.2.0.M6, Swagger UI 2.9.2.

person Tran Dinh    schedule 07.02.2020
comment
ВОТ ЭТО ДА. Спасибо! Это сработало для меня. - person Bharat Kr. Lal; 21.12.2020

В Spring Boot 2.4 и OpenAPI могут представлять интерес следующие свойства в application.properties:

  • springdoc.swagger-ui.tagsSorter=альфа
  • springdoc.swagger-ui.сортировщик операций=альфа
person mp31415    schedule 14.03.2021