Swagger
- REST API 개발 시 문서를 자동으로 만들어주는 프레임워크
- 간단한 설정으로 프로젝트에 지정한 URL을 HTML 화면으로 확인
- API에 대한 메뉴얼 자동 생성
- Postman과 같이 API 테스트 가능
- Java, Python, Node.js 등 다양한 언어를 지원한다.
스프링 버전이 높아서 그런지 http://localhost:8080/swagger-ui 이 페이지로 죽어도 안들어가짐 ㅠㅠㅠㅠㅠ
이것 저것 다 해봤는데도 안되고..................
울면서 포기하기 일보직전..
빛과소금 Baeldung 에서 11월 12일에 올린 글을 발견.. springboot가 최신형이라 문제인 거 같아.. 이걸 적용해봄!!!!!!
pom.xml
<!-- swagger -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.2.32</version>
</dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.2.32</version>
</dependency>
찾아보니 내가 삽질하던 springfox가 업데이트를 중단한 사이 springdoc이 나타난듯 하다.
Springdoc도 Springfox와 마찬가지로 스프링으로 개발하는 프로젝트의 swagger문서를 쉽게 작성할 수 있도록 도와주는 라이브러리.
Maven Repository: org.springdoc " springdoc-openapi-ui
springfox 보다 쉬운 느낌이라고 써져있는데.. springfox의 경우 config 파일을 만들었는데, 이건 안만들어도 되는 거 보니 훨씬 쉬운 거 같긴 하다.
- springfox / springdoc 비교
Swagger. Springfox-Swagger 그리고 Springdoc - springdoc 문서
OpenAPI 3 Library for spring-boot - swagger 설정 팁(spring security 적용했을 경우)
Spring Boot - Swagger 적용
→ /v3/api-docs 접속은 가능하나 /swagger-ui.html은 안 되는 경우
Application클래스에 @EnableWebMvc 설정이 혹시 있는지 확인한다
Spring boot 2.2.4 이후 버전부터는 @EnableWebMvc가 이미 내장되어 있다. 이경우 오히려 제거해주어야 한다.
ㅎㅎ 아까 @EnableWebMvc
이거 삽질을 으마으마 하게 했는데.. 이미 내장이되어 있었군...
이렇게 세팅을 해주면 아까는 죽어도 안됐던.. http://localhost:8080/swagger-ui.html 에 들어가진다!!
Gradle 설정
swagger 설정하려고 오랜만에 블로그글을 봤는데.. 왜이렇게 중구남방으로 써놨는지..
- Gradle 7.1.1
- springboot 2.5.4
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.5.2'
spring security 설정
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.headers().frameOptions().disable()
.and()
.authorizeRequests()
.antMatchers("/", "/login/**","/swagger-ui.html")
...
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/v3/api-docs",
"/v3/api-docs/**",
"/swagger-ui.html",
"/swagger-ui/**");
}
- antMatchers에 swagger url 등록
- web configure에 swagger url 등록
gradle 설정 후 별로의 config 파일 없이 잘 되는 거 확인^^!