본문 바로가기
개발/Spring

[Spring] 스웨거(Swagger) 라이브러리

by devhooney 2022. 8. 17.
728x90

기존에는 api 테스트를 위해서 포스트맨을 사용했는데,

스웨거는 서버로 요청되는 api 리스트를 html 화면으로 문서화해서 테스트할 수 있는 라이브러리이다.

@RestController를 읽어서 api를 분석해서html문서로 정리해준다.

아주 편리해보인다.

 

- dependency에 아래 두 가지를 넣어준다.

 

	implementation group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
	implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'

 

- 나는 gradle을 사용 중이기 때문에 buid.gradle 파일 안에 넣어줬다.

- config 파일을 만들어준다. 나는 이름을 swaggerConfig로 지었다.

 

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("패키지 경로를 넣어주세요."))
                .paths(PathSelectors.any())
                .build();
    }

    // 화면에 보여질 설정값들
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("제목을 지어주세요.")
                .description("설명을 해주세요.")
                .version("버전을 입력해주세요.")
                .build();
    }
}

 

- 나는 패키지 경로가 com.hooney.server라서 이렇게 넣어줬다.

- 빈 등록을 해주었기 때문에 서버를 실행 후 localhost:8080/swagger-ui.html로 접속하면 되는데

 

white label error가 발생했다 ㅠㅠㅠ

- 설정을 더 해줘야된다고 한다.

- config 파일을 하나 더 만들어준다. 이름은 WebConfig

 

@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

 

- 이렇게 해주면 잘된다.

 

728x90