본문 바로가기
슬기로운 자바 개발자 생활/스프링 및 자바웹 서비스

Swagger 적용하기(Spring Boot, Gradle)

by 슬기로운 동네 형 2017. 8. 15.
반응형

 스웨거(Swagger)를 나는 알고는 있었지만 모르는 사람들도 꽤 많은거 같아요.

 내가 경험했던 SI 프로젝트들에서는 여러 여건 상, 프론트 개발자와 백앤드 개발자를 구분 지어서 개발하는 경우가 그리 흔하지 않기 때문에 (거의 혼자 다함...) 이런 라이브러리에 별 관심이 없는 거 같기도하고요.

 

 하지만, 분업화 및 전문화가 되어 가고 있는게 현실이고 프론트 개발자와 백앤드 개발자가 있는 프로젝트에서는 협업할때 꼭 필요한 꽤 좋은 라이브러리 같습니다.

 

 크롬에서 백엔드를 호출만해도 json은 떨어지니 몇몇 사이트에서는 개발시 API 주소를 자바스크립으로 간단하게 등록하고 설명을 달아 협업하기도 하는데...

 

 스웨거... 저도 한번 설정해보았습니다.

 

 

1. Gradle 설정

compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.2.2'
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.2.2'

 

 

2. API 문서화 메인 페이지에 접속하면 보이는 정보(셋팅 후 : http://localhost:8080/swagger-ui.html)

및 간단한 설정들... 이럴때 빌더 패턴을 많이 쓰는 군요.

 

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo()) //기본정보
                .select()
                .apis(RequestHandlerSelectors.any())  //주소접근 옵션
                .paths(PathSelectors.any())       
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("Spring Boot REST Sample with Swagger")
                .description("스웨거 테스트")
                .termsOfServiceUrl("http://www-03.ibm.com/software/sla/sladb.nsf/sla/bm?Open")
                .contact("user@gmail.com")
                .license("Apache License Version 2.0")
                .licenseUrl("https://github.com/IBM-Bluemix/news-aggregator/blob/master/LICENSE")
                .version("2.0")
                .build();
    }
}

 

 

 

3. 이거 때문에 고생좀 했답니다. 나만 몰랐나 ^^

메타정보를 생성해주는게 있을 거 같다는 생각이 들었는데...설명서 보니 있네요.

 

    //부트일경우...jar 메타를 설정해준다
    @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/");
    }

 

 

4. 컨트롤러 하나 만들고~

 

 

5. http://localhost:8080/swagger-ui.html 입력하면 짜잔!

 

제가 만든 컨트롤러 리스트가 보이네요.

 

 

6. 파라미터가 어떤 값이 들어가는지도 나오게 되고요~

 Try it 버튼을 클릭하게 되면 submit 과 같습니다.

 

 

7. 서버에 결과를 전송하고 다양한 상태값 정보를 볼 수 있습니다.

 

 

8. 부트 로그창을 보니 submit이 잘 이루어 졌네요.

 

 

이것저것 API를 만들어 놓고 잊어버리고 또 만들고 또만들고...

이제 이런일은 없어 질듯하네요...

 

반응형

댓글