2016-11-15 2 views
1

Quiet ziemlich straighforward Frage: Wie kann ich die Endpunkte in Swagger-Ui in v2.2.6 zu sortieren? Ich benutze Springfox für den Java-Teil.Swagger UI: Wie benutzerdefinierte Ressourcen sortieren

In meiner Hauptseite von Swagger habe ich eine Sammlung von Ressourcen nach Tags gruppiert. Diese Tags sind in zufälliger Reihenfolge. Ich möchte es in einer benutzerdefinierten Reihenfolge (und wenn es nicht möglich ist, alphabetisch). Meine SwaggerConfig.java Datei:

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

Und dies ist der Tag resultierende JSON-Datei, dass Swagger-ui in der gleichen Reihenfolge verwendet. Wie Sie sehen können, scheint die Reihenfolge zufällig zu sein. Nicht die Java-Tags-Reihenfolge, nicht alphabetisch. (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" 
} 
] 

Antwort

2

Nachdem in das Problem zu graben, ich sehe, dass neue Versionen von Prahlerei-ui keine benutzerdefinierte Bestellung als Option unterstützen. Springfox gibt auch keine Chance, den generierten JSON neu zu ordnen, also ist der einzige Weg, einen "Workaround" in Swagger-Ui zu implementieren.

In Render-Funktion Linie 21766 von Prahlerei-ui.js Datei (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; 
}) 

Mit diesem Code die UI zeigt die bestellten Tags.

+0

Siehe https://github.com/springfox/springfox/issues/732 – splintor