Swagger 설정(springboot 2.3.4)

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 파일을 만들었는데, 이건 안만들어도 되는 거 보니 훨씬 쉬운 거 같긴 하다.

/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 파일 없이 잘 되는 거 확인^^!