2016-11-15 4 views
1

Тихий довольно простой вопрос: как я могу сортировать конечные точки в swagger-ui в v2.2.6? Я использую springfox для java-части.Интерфейс Swagger: как настраивать ресурсы сортировки

На моей главной странице чванства у меня есть коллекция ресурсов, сгруппированных по тегам. Эти теги находятся в случайном порядке. Я хотел бы иметь его в обычном порядке (и если это невозможно, в алфавитном порядке). Мой SwaggerConfig.java файл:

package cat.meteo.apiinterna.commons.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import springfox.documentation.builders.ApiInfoBuilder; 
import springfox.documentation.builders.PathSelectors; 
import springfox.documentation.builders.RequestHandlerSelectors; 
import springfox.documentation.service.ApiInfo; 
import springfox.documentation.service.Tag; 
import springfox.documentation.spi.DocumentationType; 
import springfox.documentation.spring.web.plugins.Docket; 
import springfox.documentation.swagger2.annotations.EnableSwagger2; 

@Configuration 
@EnableSwagger2 
public class SwaggerConfig { 

@Bean 
public Docket api() { 
    return new Docket(DocumentationType.SWAGGER_2) 
      .select() 
      .apis(RequestHandlerSelectors.any()) 
      .paths(PathSelectors.any()) 
      .build() 
      .tags(
        new Tag("XEMA Me", "1"), 
        new Tag("XEMA Ul", "2"), 
        new Tag("XEMA Ag", "3"), 
        new Tag("Prono", "4"), 
        new Tag("Sound", "5") 
      ) 
      .apiInfo(apiInfo()); 
} 

private ApiInfo apiInfo() { 
    return new ApiInfoBuilder() 
      .title("API REST") 
      .description("Self-documented API") 
      .version("v0.1.0") 
      .build(); 
    } 
} 

И это тег в результате JSON файл, чванство-интерфейс использует в том же порядке. Как вы видите, порядок кажется случайным. Не порядок ярлыков, а не в алфавитном порядке. (http://localhost:8080/XXX/v2/api-docs)

"tags": [ 
{ 
"name": "XEMA Ul", 
"description": "2" 
}, 
{ 
"name": "XEMA Me", 
"description": "1" 
}, 
{ 
"name": "XEMA Ag", 
"description": "3" 
}, 
{ 
"name": "Sound", 
"description": "5" 
}, 
{ 
"name": "Prono", 
"description": "4" 
} 
] 

ответ

2

После копания в проблему, я вижу, что новые версии развязность-интерфейса не поддерживает пользовательский порядок в качестве опции. Springfox также не дает возможности изменить порядок созданного json, поэтому единственный способ - реализовать «обходной путь» в swagger-ui.

В визуализации функции, линия 21766 из развязности-ui.js файла (v2.2.6):

// Workaround: alphabetically ordered tags 
this.api.apisArray.sort(function (a, b) { 
if (a.tag < b.tag) 
    return -1; 
if (a.tag > b.tag) 
    return 1; 
return 0; 
}) 

С помощью этого кода пользовательского интерфейса показывает тег заказанных.

+0

См. Https://github.com/springfox/springfox/issues/732 – splintor