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
@author Josselin Tobelem