프로젝트/taka: 대여사업 관리 서비스

[taka] swagger ui 달기 및 NoSuchMethod 오류 해결하기

k9yuw 2024. 7. 21. 19:10

Swagger ui란?

Swagger UI는 RESTful API를 시각적으로 탐색하고 테스트할 수 있는 인터페이스로, 개발자들이 API의 엔드포인트와 그에 따른 요청 및 응답을 쉽게 확인할 수 있도록 돕는다. 이는 API 사용 방법을 명확하게 보여주며, API의 복잡한 구조를 한눈에 파악할 수 있도록 한다.

Swagger ui 가 필요한 이유

1. api 문서 작성 자동화 가능: 간단한 코드 추가로 API 문서를 자동 생성해주기 때문에 문서 작성에 드는 시간과 노력을 크게 줄여주며, 문서와 코드의 불일치를 방지한다. API가 변경될 때마다 수동으로 문서를 업데이트할 필요 없이, 코드와 함께 문서가 자동으로 최신 상태로 유지된다.

 

2. 개발, 테스트의 편리함: Swagger UI는 사용자가 브라우저에서 직접 API를 직접 호출해보고 응답을 확인할 수 있는 인터페이스를 제공하기 때문에 별도의 도구나 스크립트를 작성할 필요 없이 바로바로 테스트가 가능하다.

 

3. 협업 효율성 증대: API를 사용하는 다른 팀이나 외부 개발자에게 API 사용 방법을 설명할 때, Swagger UI를 통해 명확하고 직관적인 문서를 제공하여 잘못된 사용으로 인한 오류를 줄여준다. 

 

 

적용법은 그냥 의존성 추가를 하면 된다. 간단하니 구글링 해봐라

 

처음엔 저 에러 페이지 자체를 구글링 했는데 뭐 쓸만한게 안나와서 로그를 쭉 살펴봤다.

 

io.swagger.v3.oas.models.media.Schema 클래스에서 getExampleSetFlag 메서드를 찾을 수 없다라는 에러였고

찾아보니까 Swagger 버전, 라이브러리 불일치로 생기는 문제 같았다. 

 

현재 쓰고 있는 디펜던시는 다음과 같았는데

//swagger-ui
implementation 'io.springfox:springfox-boot-starter:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'
implementation 'org.springframework.boot:spring-boot-starter-actuator'

 

구글링해본 결과 spring-doc open api와 springfox 라이브러리를 동시에 사용하고 있어서 그렇다고 한다. 

두 라이브러리 모두 Swagger과 OpenAPI를 지원하지만 작동 방식이 다르기 때문에 둘 중 하나만 사용해야 된다고 한다.

 

 

근데 세번째 줄을 주석처리 했더니 WhiteLabel Errorpage가 떠서 첫번째 , 두번째 줄을 주석처리 했더니 해결이 되었다.

 

페이지가 잘 뜨는 것을 확인할 수 있다.

 

 

배운 점

에러가 뜨면 로그를 꼭 자세히 살펴보자.

 


참고 자료

https://github.com/springdoc/springdoc-openapi/issues/2205

 

java.lang.NoSuchMethodError: 'io.swagger.v3.oas.models.media.Schema io.swagger.v3.oas.models.media.Schema.addProperty(java.lang.

java.lang.NoSuchMethodError: 'io.swagger.v3.oas.models.media.Schema io.swagger.v3.oas.models.media.Schema.addProperty(java.lang.String, io.swagger.v3.oas.models.media.Schema) In RequestBodyInfo.jav...

github.com