스터디일지/PROJECT

Final Project - Random Navi - Swagger적용하기

똥쟁이핑크 2023. 10. 19. 11:28

https://velog.io/@kjgi73k/Springboot3%EC%97%90-Swagger3%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0

 

Springboot 3.x에 Swagger를 적용시켜보자!

Springboot 3.0.1에서 Swagger 3.0.0을 적용 중 발생하는 에러들을 해결해 보자

velog.io

위의 블로그 내용은 현재 1번째로 직면하고 있는 문제가 그대로 적혀 있어서

이렇게 빌드 내용을 적어주고 Application을 실행했는데 

 

//swagger
    implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'

 

이런 에러가 떴다.

 

맨 밑에는 Unable to determine Dialect without JDBC metadata 에러가 있었다.

 

생각해보니 데이터베이스 연결을 안했던게 떠올랐다.

연결하고 localhost:8080/swagger-ui/index.html 로 들어가니 

잘된다.

 

그런데 설정을 하지 않은 즉 @Tag를 하지 않은 Controller가 나왔다

어디서 나온건지... 한참 찾다가 SwaggerConfig 파일을 만들어주고 아래 처럼 내용을 작성했는데도 

여전히 변함이 없었다.

 @Bean
    public OpenAPI openAPI() {
        Info info = new Info()
                .title("경로 추천 네비게이션")
                .version("1.0")
                .description("API 명세서");

        return new OpenAPI()
                .components(new Components())
                .info(info);
    }

아래 사이트 참고해서 해보고 

https://recordsoflife.tistory.com/349

 

Spring Boot의 Swagger 문서에서 끝점 숨기기

Java 에코 시스템에서 몇 년간의 경험이 있고 그 경험을 커뮤니티와 공유하고 (물론 작업에 대한 대가를받는 데) 관심이 있다면 "Write for Us"페이지를 참조하십시오 . 건배, Eugen 1. 개요 Swagger 문서

recordsoflife.tistory.com

여러가지 방법을 시도 해봤는데 
결론은 Config 파일을 다시 재 작성해서 해결했다.

@Configuration
public class SwaggerConfig {
    @Bean
    public GroupedOpenApi myApi() {
        return GroupedOpenApi.builder()
                .group("경로 추천 api") // 컨트롤러 그룹의 이름
                .pathsToMatch("/api/**") // 해당 패턴을 사용하여 컨트롤러를 그룹화
                .build();
    }

작성하고 싶은 path를 그룹화해서 명시해주면 해결되는 문제였다.

그리고 그 과정에서 빌드도 다시 버전을 바꿔서 빌드 했다.

//swagger 빌드 변경
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0' // 최신 버전으로 변경

원하는 대로 결과가 잘 나와서 만족스럽다
쉬운듯 보였으나 처음해보니 막상 이런저런 문제가 발생해서 2일 정도 걸린것 같다.