본문 바로가기

개발/Spring

Swagger 적용(2.3.0)

swagger는 springfox, springdoc-openapi 두 가지가 있다. springfox는 업데이트가 멈춘 상태라 springdoc-openapi를 사용하기로 했다. spring boot 3에서는 버전 2 이상을 사용해야 한다.

 

build.gradle

implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'

 

/swagger-ui/index.html 경로로 접속하면 swagger ui 접속

기본으로 설정된 경로를 수정하려면 아래와 같이 yml 파일에 작성하면 된다.

springdoc:
  swagger-ui:
    path: /swagger/ui
  api-docs:
    path: /api/docs

 

이렇게 입력하면 해당 경로로 접속 되고 아래 주소로 바뀐다.

/swagger/swagger-ui/index.html

일단 중간에 패스를 하나 넣어 주소를 숨길 수 있다.

api json도 마찬가지로 /v3/api-docs → /api/docs로 기본 경로로의 접속을 숨길 수 있다.

 

OpenAPI Config

@Configuration
public class OpenAPIConfig {

    @Bean
    public OpenAPI openAPI() {
        Info info = new Info()
                .title("SIMPLE API")
                .description("API of simple sevice")
                .version("1.0");

        return new OpenAPI()
                .info(info);

    }
}

 

이렇게 이름과 설명이 생성된다.

 

Security 설정

 

토큰을 사용하여 인증과 인가를 한다면 swagger에서도 사용할 수 있게 설정을 해야한다.

@Configuration
public class OpenAPIConfig {

    @Bean
    public OpenAPI openAPI() {
        SecurityScheme securityScheme = new SecurityScheme()
                .type(SecurityScheme.Type.HTTP)
                .scheme("bearer")
                .bearerFormat("JWT")
                .in(SecurityScheme.In.HEADER)
                .name("Authorization");
        SecurityRequirement securityRequirement = new SecurityRequirement().addList("JWT");

        Info info = new Info()
                .title("SIMPLE API")
                .description("API of simple sevice")
                .version("1.0");

        return new OpenAPI()
                .components(new Components().addSecuritySchemes("JWT", securityScheme))
                .security(Arrays.asList(securityRequirement))
                .info(info);

    }
}
  • 요청 헤더에 Authorization을 추가하고 bearer jwt 토큰 사용 설정

Authorize 버튼이 생기고 토큰을 입력할 수 있는 칸이 뜬다