2016-02-19 1 views
1

J'utilise springfox-swagger2 pour mon Spring MVC REST API. Tout fonctionne bien avec swagger mais mon problème est que je ne peux pas ajouter d'informations supplémentaires à ma documentation swagger.Springfox Swagger2 - @ApiOperation ne fonctionne pas

Maven Dépendance:

<!-- Swagger --> 
<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger2</artifactId> 
    <version>2.2.2</version> 
</dependency> 

<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger-ui</artifactId> 
    <version>2.2.2</version> 
</dependency> 

Ma classe de configuration Swagger:

@Configuration 
@EnableWebMvc 
@EnableSwagger2 
@ComponentScan("path.to.controller.package") 
public class SwaggerConfig { 

    @Bean 
    public Docket customImplementation() { 
     return new Docket(DocumentationType.SPRING_WEB).apiInfo(apiInfo()); 
    } 

    @Bean 
    public UiConfiguration uiConfig() { 

     return UiConfiguration.DEFAULT; 
    } 

    private ApiInfo apiInfo() { 
     ApiInfo apiInfo = new ApiInfo("Service API", "Simple REST Service", "0.0.1", 
       "[email protected]", "[email protected]", " ", " "); 
     return apiInfo; 
    } 
} 

Ma classe contrôleur:

@RestController 
@RequestMapping("/persons") 
public class PersonController { 

    Logger LOGGER = LoggerFactory.getLogger(PersonController.class); 

    @RequestMapping(value = "/{id}", method = RequestMethod.GET, headers = "Accept=application/json") 
    @ApiOperation(value = "doStuff", response = Person.class) 
    @ApiImplicitParams({@ApiImplicitParam(name="Authorization", value="MY DESCRIPTION")}) 
    public @ResponseBody Person getPerson(@PathVariable String id, 
      @RequestHeader(value = "Authorization") String authToken) throws Exception { 

      //do things and return 
    } 
} 

Alors, appelant les fanfaronnades-ui le contrôleur est indiqué, la méthode, tout sauf mes infos supplémentaires définies en @ApiOperation et @ApiImplicitParams. Est-ce que quelqu'un a une idée d'où le problème peut venir? Les paramètres ne sont pas non plus dans le fichier JSON qui est créé à partir de Swagger.

Répondre

2

Essayez de remplacer votre méthode customImplementation() par:

@Bean 
public Docket customImplementation() { 
    return new Docket(DocumentationType.SWAGGER_2) 
     .select() 
     .apis(RequestHandlerSelectors.any()) 
     .build() 
     .apiInfo(apiInfo()); 
}  

Générez le projet, puis vos infos supplémentaires devraient apparaître.

EDIT: Je ne sais pas si cela fait une différence, mais je me sers de ces dépendances:

<dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger2</artifactId> 
     <version>2.3.1</version> 
    </dependency> 

    <dependency> 
     <groupId>io.springfox</groupId> 
     <artifactId>springfox-swagger-ui</artifactId> 
     <version>2.1.2</version> 
    </dependency> 
+0

parfait - merci, le changement dans la customImplementation() a fait fonctionner –