2015-09-01 12 views
10

Desidero creare la documentazione di Swagger per un set esistente di API RESTful. Ho il seguente requisito:Utilizzo di Javadocs per generare il documento Swagger

  1. Generare offline Swagger Doc (ho utilizzato http://kongchen.github.io/swagger-maven-plugin/). Questo plugin mi aiuta a generare la documentazione di Swagger durante la compilazione.
  2. Leggere il Javadoc esistente in modo che possano essere utilizzati nella documentazione di Swagger.

Finora utilizzando il plugin di cui sopra sono stato in grado di raggiungere il punto numero 1. Così, per un metodo REST esistente:

/** 
* <p> 
* Gets the {@link DisplayPreferenceModel} with the name as provided in the parameter. The preference with the given name defined at the tenant or master level is returned. 
* This API gives us the preference if it is eligible for unauthorized access If it is not eligible it throws an Exception saying Authorization required. 
* </p> 
* @param preferenceName 
*   - The name of the preference. 
* @return {@link DisplayPreferenceModel} 
*/ 
@RequestMapping(method = RequestMethod.GET, value = "/preferences/{preferenceName}") 
@ApiOperation(value = "This API gives us the preference if it is eligible for unauthorized access If it is not eligible it throws an Exception saying Authorization required", 
         notes = "No Notes please", response = DisplayPreferenceModel.class) 
@ApiResponses(value = { 
         @ApiResponse(code = 400, message = "Invalid preferenceName supplied"), 
         @ApiResponse(code = 404, message = "Display Preference Not Found") 
         } 
      ) 
public DisplayPreferenceModel getDisplayPreference(@PathVariable("preferenceName") final String preferenceName) { 
} 

sono stato in grado di generare la documentazione Swagger. L'utilizzo di @ApiOperation & @ApiResponses rende la documentazione eccellente.

Tuttavia, la mia domanda è possibile utilizzare Javadoc invece di fare in modo che ogni sviluppatore crei @ApiOperation & @ApiResponses in modo da risparmiare tempo per la mia squadra?

+0

come generare questo documento @raj? il mio progetto è basato su maven ho aggiunto anche la notazione Api, la notazione ApiResonses ma come posso generare qualche aiuto? –

+0

Ho usato "swagger-springmvc" v1.0.2. Quindi ho creato una classe CustomSwaggerConfig con "@ Configuration" e "@EnableSwagger". E in applicationContext.xml ho fatto riferimento a CustomSwaggerConfig. – Raj

+0

non ho primavera sono solo con Maven, struts –

risposta

8

È possibile generare spavalderia-ui da Javadoc utilizzando Enunciate, che ha un modulo di Swagger. In primo luogo, è necessario aggiungere il plugin Maven al tuo file pom; per esempio.

<plugin> 
     <groupId>com.webcohesion.enunciate</groupId> 
     <artifactId>enunciate-maven-plugin</artifactId> 
     <version>${enunciate.version}</version> 
     <executions> 
      <execution> 
        <goals> 
        <goal>docs</goal> 
        </goals> 
        <configuration> 
        <configFile>enunciate.xml</configFile> 
        <docsDir>${project.build.directory}</docsDir> 
        </configuration> 
      </execution> 
     </executions> 
</plugin> 

dove 'enunciate.xml' contiene le configurazioni specifiche di progetto e si presenta così:

<enunciate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:noNamespaceSchemaLocation="http://enunciate.webcohesion.com/schemas/enunciate-2.0.0-M.3.xsd"> 

    <application root="/rest" /> 

</enunciate> 

Quindi eseguire mvn package e genererà file di documentazione Swagger dal Javadoc.

+0

Questo funziona in modo fantastico anche senza alcuna configurazione specificata. Solo una nota a margine, quando usi l'obiettivo "docs" che genera su "mvn compile', non su" mvn package ". 'mvn package' è per l'obiettivo 'assemblare' che è diverso.Assicurati anche di leggere su quali moduli hai bisogno, altrimenti genererà un sacco di cose che non ti servono come client per altre lingue. –