2016-09-26 1 views
0

ich die große swagger2markup Plugin bin mit asciidoc Dokumentation für meinen REST API zu erzeugen, wie durch Swagger zur Verfügung gestellt. Ich habe swagger2markup documentation gefolgt, und ich bin ein Spring MVC Integration Test Markup von meinem Springfox Swagger Endpunkt so zu erzeugen (Ich verwende Maven):Swagger2Markup: Wie Gruppierung nach Tags bei der Verwendung von Swagger Remote-Endpunkt aus dem Test?

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest(classes = { AppConfig.class, SwaggerConfig.class }) 
public class DocumentationIT { 

    protected MockMvc mockMvc; 

    @Autowired 
    protected WebApplicationContext webApplicationContext; 

    @Rule 
    public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("src/docs/asciidoc/apidoc/generated-snippets"); 

    @Before 
    public void setUp(){ 
     this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) 
       .apply(documentationConfiguration(this.restDocumentation)) 
       .build(); 
    } 

    @Test 
    public void convertSwaggerToAsciiDoc() throws Exception { 
     this.mockMvc.perform(get("/v2/api-docs") 
       .accept(MediaType.APPLICATION_JSON)) 
       .andDo(
         Swagger2MarkupResultHandler 
           .outputDirectory("src/docs/asciidoc/apidoc") 
           .withExamples("src/docs/asciidoc/apidoc/generated-snippets").build()) 
       .andExpect(status().isOk()); 
    } 
} 

Alles funktioniert super und alle meine Wege sind in meinem letzten Dokumentation jedoch Pfade alle direkt am Stamm angezeigt und sind nicht von Ressourcen (dh von Controllern) gruppiert, so Method 1 von Controller 1 wird auf der gleichen Ebene wie Method 2 von Controller 2 erscheinen.

Meine Ausgabe:

enter image description here

Was ich möchte:

enter image description here

Von dem, was ich sehen kann, wenn sie in dieser swagger2-markup Maven project template Generation aus einer lokalen Datei wie verwenden, können Sie geben Sie eine Eigenschaft sagen swagger2markup zu gruppieren Sie Ihre Pfade durch Tags die Config-Eigenschaft verwenden <swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>, aber es scheint nicht zu einer solchen Konfiguration zu sein, wenn 0 mitaus einem Test. Die einzige Option ist withMarkupLanguage(), aber es gibt keine withPathsGroupedBy() Methode ...

Fehlt mir etwas hier?

Antwort

1

Wie Sie erwähnt, gibt es eine Eigenschaft von swagger2markup.pathsGroupedBy von swagger2Markup bereitgestellt, um anzugeben, wie die Pfade gruppiert werden sollen. Swagger2MarkupResultHandler bieten jedoch keine API zur Unterstützung der Konfiguration.

Nach Swagger2Markup API,

Die Eigenschaften von Swagger2Markup sind in der Klasse io.github.swagger2markup.Swagger2MarkupProperties definiert. Die Eigenschaften sind in folgenden Reihenfolge berücksichtigt:

  1. Java System Eigenschaften

  2. Benutzerdefinierte Eigenschaften

  3. Standardeigenschaften (im Swagger2Markup)

es ist möglich, es über Systemeigenschaften zu konfigurieren. Daher können Sie eine Systemeigenschaft von swagger2markup.pathsGroupedBy zu TAGS im Test festgelegt.

Wenn Sie es vorziehen, es mit Java API zu konfigurieren, können Sie Swagger2MarkupResultHandler erweitern und die handle Methode mit der Verwendung von Swagger2MarkupConfigBuilder API überschreiben.

+0

Vielen Dank für Ihre Antwort. Leider ist die 'springfox-staticdocs' Plugin zur Zeit nicht auf eine Version von' Swagger2Markup' abhängen, die Systemeigenschaften unterstützt (es hängt aktuell 'v0.9.2' wo das Dokument, das Sie zitieren' v1.0.0' + anwendbar zu sein scheint) . Ihre zweite Lösung funktioniert jedoch sehr gut, und selbst wenn ich das lieber direkt in der lib hätte (ich habe eine [pull request] (https://github.com/springfox/springfox/pull/1498) dafür eingereicht) aber das ist eine feine genug Abhilfe für jetzt, danke! – Pom12

Verwandte Themen