[ Project ] Swagger 적용하기

듀듀·2023년 9월 9일

[Project]

목록 보기
1/2

[ Swagger란? ]

백엔드 개발에서 Web API를 문서화하기 위한 도구
간단한 설정으로 프로젝트의 API 목록을 웹에서 확인 및 테스트 가능하게 하는 라이브러리이며, RESTful API를 문서화시키고 관리하는 것에 많이 쓰인다.
API 문서를 일반 문서로 작성하게 되면 API가 변경될 때마다 문서를 함께 수정해줘야 하는 번거로움이 있는데 SpringBoot 에서 Swagger를 사용해 문서 수정을 자동화할 수 있다.
RESTful API를 테스트할 수 있다는 것이 큰 장점.

[ Swagger 사용법 ]

1. 의존성 추가

Swagger 2.9.2 버전 추가, swagger-annotation, swagger-models는 1.5.21 버전을 추가해 2.9.2버전에서 Long 타입의 필수 파라미터에 example이 없는 경우 ""공백이 Long 타입 파라미터에 들어가서 NumberFormatException이 발생하는 것을 방지해준다.

[ Error 기록 ]

#1

SpringBoot가 3이상의 버전일때 jakarta 패키지를 지원하지 않아서 생기는 문제(?)

#2

문제

  • UnsatisfiedDependencyException
    swagger2controller 빈을 생성하지 못하는 문제

원인

  • swagger2controller에 javax가 포함되는데 javax가 포함되지 않았음

해결

  • 기존에 jakarta를 쓰고 있는데 javax 의존성 추가

#3

문제

  • #2 해결하니 'apiDescriptionReader' 빈을 생성하지 못하는 문제 발생

시도

  • 터미널에서 ./gradlew dependencies 실행
    -> 실패
  • @SpringBootApplication 어노테이션이 있는 클래스에 @SpringBootApplication(exclude = {SpringfoxAutoConfiguration.class}) 를 추가하여 스프링 폭스의 자동 구성을 비활성화할 수 있습니다.
    -> SpringfoxAutoConfiguration.class가 없어서 실패
  • update your dependency on aspectj weaver to org.aspectj:aspectjweaver:1.8.6
    ->실패
  • implementation group: 'com.spring4all', name: 'swagger-spring-boot-starter', version: '2.0.1.RELEASE'
    swagger spring boot starter 다른 버전으로 변경
    ->기존 에러는 사라지고 ApplicationContextException 에러 발생

#4

문제

  • #3 해결하니
    ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper' 에러발생

시도

  • spring.mvc.pathmatch.matching-strategy 값을
    ant_path_matcher -> path_pattern_parser 로 변경
    -> 실패
  • SwaggerConfig파일의 @EnableSwagger2 제거
    springfox의 에러라고 한다.
    -> 해결!
profile
나는 내 의지대로 된다.

0개의 댓글