View on GitHub

lp4-2019

Swagger in minutes

Dépendances

Deux modules, swagger qui va chercher tous les endpoints de l’application et swagger-ui qui va générer une belle page html pour afficher un récapitulatif.


dependencies {
  ...
  compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
  compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'
  ...
}

Configuration

La page principale de configuration de swagger.

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.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
                        .basePackage("co.simplon.blog")) // TODO à adapter
                .paths(PathSelectors.any())
                .build().apiInfo(apiEndPointsInfo());
    }

    private ApiInfo apiEndPointsInfo() {

        return new ApiInfoBuilder().title("Blog REST API")
                .license("Apache 2.0")
                .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
                .version("1.0-SNAPSHOT")
                .build();
    }


}

Security

Si vous utilisez JWT, il faut autoriser des ressources pour swagger, et l’accès à swagger-ui.

http.authorizeRequests()//
                ... // TODO les pages autorisées ou interdites
                .antMatchers("/v2/api-docs", "/webjars/**", "/swagger-resources/**", "/configuration/**", "/swagger-ui.html/**").permitAll()

                // Disallow everything else...
                .anyRequest().authenticated();

http.headers().frameOptions().disable(); // Il faut aussi ajouter cette ligne, car la console s'affiche dans des frames.

Vérification

Normallement c’est tout ce qu’il faut faire. Vous pouvez maintenant vous rendre à l’adresse : http://localhost:8080/swagger-ui.html

img

@author Josselin Tobelem