먼저 build.gradle에 Swagger에 필요한 의존성을 주입해줍니다.
// Swagger
implementation 'io.springfox:springfox-boot-starter:3.0.0'
그리고 Application.yml에 아래의 코드를 추가해줍니다.
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
그다음 SwaggerConfig.java를 추가합니다.
@Configuration
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
.useDefaultResponseMessages(false)
.select()
.apis(RequestHandlerSelectors.basePackage("com.package.name.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Swagger Test")
.description("SwaggerConfig")
.version("3.0")
.build();
}
}
그다음 스프링 시큐리티를 적용했다면 SecurityConfig에 아래의 코드를 추가해줍니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()// CSRF 토큰 비활성
.authorizeRequests()
.antMatchers("/swagger-resources/**").permitAll()// swagger
.antMatchers("/swagger-ui/**").permitAll() // swagger
// 그 외 모든 요청은 인증과정 필요
.anyRequest().authenticated();
http.sessionManagement()
.maximumSessions(1)
.maxSessionsPreventsLogin(false);
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/static/css/**, /static/js/**, *.ico");
// swagger
web.ignoring().antMatchers(
"/v3/api-docs", "/configuration/ui",
"/swagger-resources", "/configuration/security",
"/swagger-ui.html", "/webjars/**","/swagger/**");
}
이제 아래의 링크를 통해 접속할 수 있습니다.
- Swagger2: http://localhost:8080/swagger-ui.html
- Swagger3: http://localhost:8080/swagger-ui/index.html