◼︎ 환경
- Model : MacBook Pro (14-inch, 2021)
- CPU : Apple M1 Pro
- MENORY : 16GB
- DISK : 512 GB SSD
- OS : macOS 13.2.4 (22F66)
- TOOLS : Visual Studio Code, Java 11, Gradle, Docker
- Version Control : GitHub
- Programming Language : Java
- Framework : Spring Boot 2.7.12, Spring Security 5.7.7
- DBMS : MySql 8.0.33
gradle 기반 spring boot 프로젝트에서 swagger 을 사용하기위해서는 아래와 같은 과정이 필요하다.
- 의존성 추가
- Swagger 설정
- 문서화를 위한 어노테이션 적용 (자동으로 문서를 생성해주지만 가독성을 위하여 어노테이션을 사용하는 것이 좋다)
1. 의존성 추가
프로젝트의 build.gradle
파일에 Swagger 관련 의존성을 추가한다. Swagger 3.x 버전 부터는 아래와 같이 하나의 의존서만 추가하면 된다.
implementation 'io.springfox:springfox-boot-starter:3.0.0'
2. Swagger 설정
Spring Security 을 사용하는 경우 브라우져에서 http://localhost:8080/swagger-ui 접속하면 아래와 같은 팝업이 보여진다. (이는 spring security 에서 접근을 제한하여 발생된다)
이경우에는 Security Filter 설정이 추가로 필요하다. WebSecurityConfig (커스텀 설정 파일) 설정 파일에 아래와 같이 swagger 관련 자원에 대한 접속을 허용하도록 한다.
@Configuration
@EnableWebSecurity
@Slf4j
public class WebSecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.cors(cors -> cors.configurationSource(corsConfigurationSource()))
.headers((headers) -> headers
.frameOptions().disable())
.authorizeHttpRequests((authz) -> authz
.antMatchers("/swagger-ui/**", "/swagger-resources/**", "/v3/api-docs" ).permitAll()
.anyRequest().authenticated()
)
return http.build();
}
}
3. 프로그램 실행
브라우져에서 http://localhost:8080/swagger-ui 접속하면 별다른 설정을 하지 않아도 자동으로 문서를 생성하여 보여준다. 가독성을 위하여 문서화 대상 클래스 코드에서 어노테이션을 사용하여 기술을 추가하면 더 쉬운 문서를 만들 수 있다. (참고로 문서화는 REST API 부분만 적용했다)
- 특정 컨트롤러, 함수, 파라메터을 문서에서 제외하려면 @ApiIgnore 어노테이션 사용.
참고자료
- https://springfox.github.io/springfox/docs/current/#getting-started
- https://velog.io/@banjjoknim/Swagger
- https://github.com/bezkoder/spring-boot-swagger-3-example
댓글 없음:
댓글 쓰기